QB64 is a modern extended BASIC programming language that retains QBasic/QuickBASIC 4.5 compatibility and compiles native binaries for Windows, Linux, and macOS.

The POINT function returns the pixel COLOR attribute at a specified graphics coordinate or the current graphic cursor position.



color_attribute% = POINT (column%, row%)

Graphic cursor position

pointer_coordinate% = POINT({0 1 2 3})


Graphic Color syntax:

Graphic cursor position syntax:


POINT in QBasic Legacy Graphic SCREEN Modes:

POINT in QB64 32 Bit Graphic _NEWIMAGE or _LOADIMAGE Modes:


How _RGB 32 bit values return DOUBLE or _UNSIGNED LONG values in QB64.

DIM clr AS LONG 'DO NOT use LONG in older versions of QB64 (V .936 down)
SCREEN _NEWIMAGE(640, 480, 32)
CLS , _RGB(255, 255, 255)  'makes the background opaque white

PRINT "POINT(100, 100) ="; POINT(100, 100)
clr = POINT(100, 100)
PRINT "Variable clr = ";  clr
IF clr = _RGB(255, 255, 255) THEN PRINT "Long OK"
IF POINT(100, 100) = _RGB(255, 255, 255) THEN PRINT "_RGB OK"
IF POINT(100, 100) = clr THEN PRINT "Type OK" 'will not print with a LONG variable type

Note: Change the DIM clr variable type to LONG to see how the last IF statement doesn’t PRINT as shown in the output below:

POINT(100, 100) = 4294967295
Variable clr = -1
Long OK

Using a POINT mouse routine to get the 32 bit color values of an image.

SCREEN _NEWIMAGE(640, 480, 32)
_TITLE "Mouse POINTer 32"

'LINE INPUT "Enter an image file: ", image$  'use quotes around file names with spaces
image$ = "QB64bee.png" 'up to 320 X 240 with current _PUTIMAGE settings
i& = _LOADIMAGE(image$, 32)
IF i& >= -1 THEN BEEP: PRINT "Could NOT load image!": END
w& = _WIDTH(i&): h& = _HEIGHT(i&)

PRINT "Make background transparent?(Y\N)";

'CLS 'commented to keep background alpha 0

IF BG$ = "Y" THEN _CLEARCOLOR _RGB32(255, 255, 255), i& 'make white Background transparent
_PUTIMAGE (320 - w&, 240 - h&)-((2 * w&) + (320 - w&), (2 * h&) + (240 - h&)), i&, 0

_MOUSEMOVE 320, 240 'center mouse pointer on screen

DO: _LIMIT 100
    mx = _MOUSEX
    my = _MOUSEY
    c& = POINT(mx, my)
    r = _RED32(c&)
    g = _GREEN32(c&)
    b = _BLUE32(c&)
    a = _ALPHA32(c&)
    LOCATE 1, 1: PRINT mx; my, "R:"; r, "G:"; g, "B:"; b, "A:"; a; "  "
    LOCATE 2, 2: PRINT "HTML Color: &H" + RIGHT$(HEX$(c&), 6)

Explanation: Use the mouse pointer to get the background RGB of the image to make it transparent with _CLEARCOLOR.

Creating an image mask to PUT an image over other colored backgrounds. See: GET and PUT Demo to run code.

 FOR c = 0 TO 59    '60 X 60 area from 0 pixel
   FOR r = 0 TO 59
    IF POINT(c, r) = 0 THEN PSET (c, r), 15 ELSE PSET (c, r), 0
   NEXT r
 GET(0, 0)-(60, 60), Image(1500) ' save mask in an array(indexed above original image).

Explanation: In the procedure all black areas(background) are changed to white for a PUT using AND over other colored objects. The other image colors are changed to black for a PUT of the original image using XOR. The array images can be BSAVEd for later use. QB64 can also PUT** a full screen 12 image from an array directly into a** BINARY file.

See Example(s)

See Also