ALPHA: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 21: Line 21:
''Example 1:'' Alpha transparency levels are always 255 in 4 or 8 bit screen modes.
''Example 1:'' Alpha transparency levels are always 255 in 4 or 8 bit screen modes.
{{CodeStart}}
{{CodeStart}}
{{Cl|SCREEN}} 13
{{Cl|SCREEN}} {{Text|13|#F580B1}}


clr~& = {{Cl|_RGBA}}(255, 0, 255, 192) 'returns closest palette color attribute  
clr~& = {{Cl|_RGBA}}({{Text|255|#F580B1}}, {{Text|0|#F580B1}}, {{Text|255|#F580B1}}, {{Text|192|#F580B1}}) {{Text|<nowiki>'returns closest palette color attribute</nowiki>|#919191}}
{{Cl|PRINT}} "Color:"; clr~&
{{Cl|PRINT}} {{Text|<nowiki>"Color:"</nowiki>|#FFB100}}; clr~&


{{Cl|COLOR}} clr~&
{{Cl|COLOR}} clr~&
{{Cl|PRINT}} "Alpha:"; {{Cl|_ALPHA}}(clr~&)
{{Cl|PRINT}} {{Text|<nowiki>"Alpha:"</nowiki>|#FFB100}}; {{Cl|_ALPHA}}(clr~&)


{{Cl|END}}
{{Cl|END}}
{{CodeEnd}}
{{CodeEnd}}
{{OutputStart}}{{text|Color 36|#FFFFFF}}
{{OutputStart}}{{Text|Color 36|#FFFFFF}}
{{text|Alpha: 255|#FF00FF}}
{{Text|Alpha: 255|#FF00FF}}
{{OutputEnd}}
{{OutputEnd}}
: ''Explanation:'' [[_RGBA]] cannot change the [[_ALPHA]] level. [[_ALPHA32]] would return 0 on any non-32 bit image or page.
: ''Explanation:'' [[_RGBA]] cannot change the [[_ALPHA]] level. [[_ALPHA32]] would return 0 on any non-32 bit image or page.


----


''Example 2:'' Finding the transparency of a 32 bit screen mode's background before and after [[CLS]].
''Example 2:'' Finding the transparency of a 32 bit screen mode's background before and after [[CLS]].
{{CodeStart}}
{{CodeStart}}
{{Cl|SCREEN}} {{Cl|_NEWIMAGE}}(640, 480, 32)
{{Cl|SCREEN}} {{Cl|_NEWIMAGE}}({{Text|640|#F580B1}}, {{Text|480|#F580B1}}, {{Text|32|#F580B1}})
BG& = {{Cl|POINT}}(1, 1)
BG& = {{Cl|POINT}}({{Text|1|#F580B1}}, {{Text|1|#F580B1}})
{{Cl|PRINT}} "Alpha ="; {{Cl|_ALPHA}}(BG&); "Press a key to use CLS!"
{{Cl|PRINT}} {{Text|<nowiki>"Alpha ="</nowiki>|#FFB100}}; {{Cl|_ALPHA}}(BG&); {{Text|<nowiki>"Press a key to use CLS!"</nowiki>|#FFB100}}
K$ = INPUT$(1)                  
K$ = {{Cl|INPUT$}}({{Text|1|#F580B1}})
{{Cl|CLS}}
{{Cl|CLS}}
BG& = {{Cl|POINT}}(1, 1)
BG& = {{Cl|POINT}}({{Text|1|#F580B1}}, {{Text|1|#F580B1}})
{{Cl|PRINT}} "CLS Alpha ="; {{Cl|_ALPHA}}(BG&)  
{{Cl|PRINT}} {{Text|<nowiki>"CLS Alpha ="</nowiki>|#FFB100}}; {{Cl|_ALPHA}}(BG&)
{{CodeEnd}}
{{CodeEnd}}
{{OutputStart}}CLS Alpha = 255  {{OutputEnd}}
{{OutputStart}}CLS Alpha = 255  {{OutputEnd}}
Line 53: Line 54:
{{PageSeeAlso}}
{{PageSeeAlso}}
* [[_ALPHA32]], [[_SETALPHA]]
* [[_ALPHA32]], [[_SETALPHA]]
* [[_RGBA]], [[_RGBA32]] {{text|(set color with alpha)}}
* [[_RGBA]], [[_RGBA32]] {{Text|(set color with alpha)}}
* [[_CLEARCOLOR]], [[_CLEARCOLOR (function)]]
* [[_CLEARCOLOR]], [[_CLEARCOLOR (function)]]
* [[_RED]], [[_GREEN]], [[_BLUE]]
* [[_RED]], [[_GREEN]], [[_BLUE]]

Latest revision as of 13:49, 19 March 2023

The _ALPHA function returns the alpha channel transparency level of a color value used on a screen page or image.


Syntax

result& = _ALPHA(color~& [, imageHandle&])


Description

  • If imageHandle& is omitted, it is assumed to be the current write page. Invalid handles will create Illegal function call errors.
  • _NEWIMAGE 32 bit SCREEN modes will always use an _UNSIGNED LONG color~& value.
    • Color values that are set as a _CLEARCOLOR always have an alpha level of 0 (transparent).
    • _SETALPHA can set any alpha level from 0 (or fully transparent) to 255 (or opaque).
    • Normal color values that are set by _RGB or _RGB32 always have an alpha level of 255(opaque).
  • In 4 (16 color) or 8 (256 color) bit palette screens the function will always return 255.
  • _RED32, _GREEN32, _BLUE32 and _ALPHA32 are all equivalent to _RED, _GREEN, _BLUE and _ALPHA but they are highly optimized and only accept a 32-bit color (B8:G8:R8:A8). Using them (opposed to dividing then ANDing 32-bit color values manually) makes code easy to read.
  • NOTE: 32 bit _NEWIMAGE screen page backgrounds are transparent black or _ALPHA 0. Use _DONTBLEND or CLS for opaque.


Examples

Example 1: Alpha transparency levels are always 255 in 4 or 8 bit screen modes.

SCREEN 13

clr~& = _RGBA(255, 0, 255, 192) 'returns closest palette color attribute
PRINT "Color:"; clr~&

COLOR clr~&
PRINT "Alpha:"; _ALPHA(clr~&)

END
Color 36
Alpha: 255
Explanation: _RGBA cannot change the _ALPHA level. _ALPHA32 would return 0 on any non-32 bit image or page.

Example 2: Finding the transparency of a 32 bit screen mode's background before and after CLS.

SCREEN _NEWIMAGE(640, 480, 32)
BG& = POINT(1, 1)
PRINT "Alpha ="; _ALPHA(BG&); "Press a key to use CLS!"
K$ = INPUT$(1)
CLS
BG& = POINT(1, 1)
PRINT "CLS Alpha ="; _ALPHA(BG&)
CLS Alpha = 255   
Explanation: Set the ALPHA value to 255 using CLS to make the background opaque when overlaying pages.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link