_WIDTH (function) - QB64 Wiki

_WIDTH (function)

From QB64 Wiki

Jump to: navigation, search

The _WIDTH function returns the width of an image handle or current write page.


columns& = _WIDTH[(imageHandle&)]


  • If imageHandle& is omitted, it's assumed to be the handle of the current SCREEN or write page.
  • To get the width of the current program screen window use zero for the handle value: wide& = _WIDTH(0)
  • If the image specified by imageHandle& is in text only(SCREEN 0) mode, the number of characters per row is returned.
  • If the image specified by imageHandle& is in graphics mode, the number of pixels per row is returned.
  • If imageHandle& is an invalid handle, then an invalid handle error is returned.
  • The maximum pixel coordinate of a program screen is one less than what the function returns.

Example: A SUB program that centers text in any graphic screen mode except text mode SCREEN 0 using QB64.

s& = _NEWIMAGE(800, 600, 256) SCREEN s& Align 15, 5, s&, "This text is centered on the screen!" SUB Align (Tcolor, Trow, mode&, txt$) center& = _WIDTH (mode&) \ 2 'returns pixels in graphic modes MaxCol = (center& \ 8) + 1 'screen text width = 8 pixels Tcol = MaxCol - (LEN(txt$) \ 2) COLOR Tcolor: LOCATE Trow, Tcol: PRINT txt$; END SUB

Explanation: _NEWIMAGE enlarges a screen to 800 pixels wide which is what _WIDTH function will return. The center is 800 \ 2 or 400. Since the text width is 8 pixels, that is divided by 8 to get 50 as the center text column. Then half of the text length is subtracted to find the starting text print LOCATE column.

Note: The screen handle parameter is required because using no handle could assume other page handles created by functions like _NEWIMAGE or _PUTIMAGE! Use the correct handle in the SUB call! When using SCREEN 0, the MaxCol variable is not needed because _WIDTH returns the number of text columns, not pixels. Use the center value and add 1.
Tcol = (center& + 1) - LEN(txt$) \ 2

See also:

Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
  • Page
  • Discussion
  • View source
  • History
Personal tools
  • Log in
  • What links here
  • Related changes
  • Special pages
  • Printable version