Wiki source for KeyPgLinegraphics


Show raw source

{{fbdoc item="title" value="LINE (GRAPHICS)"}}----
Draws a line

{{fbdoc item="syntax"}}##
**Line** [//target//,] [[STEP]|(//x1//, //y1//)]-[STEP] (//x2, y2//) [, [//color//][, [B|BF][, //style//]]]
or
**Line** - (//x2//, //y2//) [, [//color//][, [B|BF][, //style//]]]
##
{{fbdoc item="param"}}
##//target//##
specifies buffer to draw on
##STEP##
indicates that the starting coordinates are relative
##//(x1, y1)//##
starting coordinates of the line
##STEP##
indicates that ending coordinates are relative
##//(x2, y2)//##
ending coordinates of the line
##//color//##
the color attribute.
##B|BF##
specifies box or box filled mode
##//style//##
line style

{{fbdoc item="desc"}}
Graphics statement that draws a straight line or a box between two points. The action will take place on the current work page set via ##[[KeyPgScreenset|ScreenSet]]##, or onto the buffer ##[[KeyPgGetgraphics|Get]]##/##[[KeyPgPutgraphics|Put]]## buffer if specified.

##**Line**## coordinates are affected by custom coordinates system set via ##[[KeyPgWindow|Window]]## and ##[[KeyPgViewgraphics|View (Graphics)]]## statements, and respect clipping rectangle set by [[KeyPgViewgraphics|View (Graphics)]]. If a pair of coordinates is preceded by the ##STEP## keyword, the coordinates are assumed to be relative to the last graphics cursor position. If the ##B## flag is specified, a rectangle will be drawn instead of a line, with ##(//x1//,//y1//)-(//x2//,//y2//)## as the coordinates of the opposite rectangle corners. If ##BF## is specified, a filled rectangle will be drawn.

##//Color//## denotes the color attribute, which is mode specific (see ##[[KeyPgColor|Color]]## and ##[[KeyPgScreengraphics|Screen (Graphics)]]## for details). If omitted, the current foreground color as set by the ##[[KeyPgColor|Color]]## statement is used.

##//Style//##, if specified, allows styled line drawing; its value is interpreted as a 16-bit bitmask, and ##**Line**## will use it to skip pixel drawing. Starting at ##(//x1//,//y1//)##, the most significant bit of the style mask is checked: if ##1##, the pixel is drawn, if ##0##, it's skipped. This repeats for all the line pixels with the other bits, with the mask being reused when the 16 bits are all checked.

When ##**Line**## is used as ##**Line** - (x2, y2)##, a line is drawn from the current cursor position to the ##(//x2//,//y2//)## coordinates specified by ##**Line**##. Alternatively, ##[[KeyPgPoint|Point]]## can be used to get the current cursor position.

**Note:** Either chained use or boxes drawn with ##**Line**## can induce pixels overdrawn at some locations. Thus, the resultant (blended) color of these overdrawn pixels is affected if a transparent color (in conjunction with the ##GFX_ALPHA_PRIMITIVES## option flag) is used.

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/gfx/line.bas"}}%%(freebasic)
'' draws a diagonal red line with a white box, and waits for 3 seconds
screen 13
line (20, 20)-(300, 180), 4
line (140, 80)-(180, 120), 15, b
line - ( 200, 200 ), 15
sleep 3000
%%

{{fbdoc item="filename" value="examples/manual/gfx/line_style.bas"}}%%(freebasic)
' Draws 2 lines with 2 different line styles in 2 different colors
screenres 320, 240

Line (10, 100)-(309, 140), 4, B, &b1010101010101010 ' red box with dashed border

Line (20, 115)-(299, 115), 9, , &b1111000011111111 ' blue dashed line
Line (20, 125)-(299, 125), 10, , &b0000000011110000 ' green dashed line

Sleep
%%

{{fbdoc item="diff"}}
- ##//target//## is new to ""FreeBASIC""

{{fbdoc item="see"}}
- [[KeyPgCircle|Circle]]
- [[KeyPgWindow|Window]]
- [[KeyPgViewgraphics|View (Graphics)]]

{{fbdoc item="back" value="CatPgGfx2D|2D Drawing Functions"}}
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki



sf.net phatcode