_RGB32

From QB64.org wiki
Jump to: navigation, search

The _RGB32 function returns the 32-bit RGBA color value with specified red, green and blue component intensities.


Syntax

color32value~& = _RGB32(red&, green&, blue&)


Parameters

  • red& specifies the red LONG component intensity from 0 to 255.
  • green& specifies the green LONG component intensity from 0 to 255.
  • blue& specifies the blue LONG component intensity from 0 to 255.


Description

  • The value returned is ALWAYS a 32-bit _UNSIGNED LONG color value, as is the POINT value.
  • Return variable types must be LONG or resulting color may lose the _BLUE value.
  • Color intensity values outside of the 0 to 255 range are clipped.
  • Returns LONG 32 bit hexadecimal values from &HFF000000 to &HFFFFFFFF, always with full _ALPHA.
  • When LONG values are PUT to file, the ARGB values become BGRA. Use LEFT$(MKL$(color32value~&), 3) to place 3 colors.
  • Colors returned are always opaque as the transparency value is always 255. Use _ALPHA or _CLEARCOLOR to change it.
  • NOTE: Default 32-bit backgrounds are clear black or _RGBA(0, 0, 0, 0). Use CLS to make the black opaque.


Examples

Example 1: Converting the color port RGB intensity palette values 0 to 63 to 32 bit hexadecimal values.

SCREEN 12 DIM hex32$(15) FOR attribute = 1 TO 15 OUT &H3C7, attribute 'set color attribute to read red = INP(&H3C9) * 4 'multiply by 4 to convert intensity to 0 to 255 RGB values grn = INP(&H3C9) * 4 blu = INP(&H3C9) * 4 hex32$(attribute) = "&H" + HEX$(_RGB32(red, grn, blu)) 'always returns the 32 bit value COLOR attribute PRINT "COLOR" + STR$(_RGB(red, grn, blu)) + " = " + hex32$(attribute) 'closest attribute NEXT

COLOR 1 = &HFF0000A8 COLOR 2 = &HFF00A800 COLOR 3 = &HFF00A8A8 COLOR 4 = &HFFA80000 COLOR 5 = &HFFA800A8 COLOR 6 = &HFFA85400 COLOR 7 = &HFFA8A8A8 COLOR 8 = &HFF545454 COLOR 9 = &HFF5454FC COLOR 10 = &HFF54FC54 COLOR 11 = &HFF54FCFC COLOR 12 = &HFFFC5454 COLOR 13 = &HFFFC54FC COLOR 14 = &HFFFCFC54 COLOR 15 = &HFFFCFCFC

Note: This procedure also shows how the returns from _RGB and _RGB32 differ in a non-32 bit screen mode.


Example 2: Working with 32 bit colors.

SCREEN _NEWIMAGE(640, 480, 32) CLS , _RGB32(0, 0, 128) 'deep blue background LINE (100, 100)-(540, 380), _RGB(255, 0, 0), BF ' a red box LINE (200, 200)-(440, 280), _RGB(0, 255, 0), BF ' a green box SLEEP 'Just so we can see our pretty background before we print anything on it. COLOR _RGB32(255, 255, 255), 0 'White on NO BACKGROUND FOR i = 1 TO 10 PRINT "This is just a whole bunch of happy nothing! Happy World!!" NEXT PRINT: PRINT: PRINT: COLOR 0, _RGB32(0, 0, 0) 'And here, we're going with NO COLOR text, with a BLACK background. 'Notice how this doesn't change the color on the screen at all, where the text is, but does toss a black background to it. LOCATE , 15: PRINT "NOTICE HOW OUR 0 COLOR WORKS?" PRINT LOCATE , 15: PRINT "NEAT, HUH?" SLEEP SYSTEM

Code by Steve McNeill


See also



Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page