Line (Graphics)
Draws a line
Syntax
`
Line [target,] [[STEP]|(x1, y1)]-[STEP] (x2, y2) [, [color][, [B|BF][, style]]]
or
Line - (x2, y2) [, [color][, [B|BF][, style]]]
`
Parameters
`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
Description
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 `ScreenSet`, or onto the buffer `Get`/`Put` buffer if specified.
`Line` coordinates are affected by custom coordinates system set via `Window` and `View (Graphics)` statements, and respect clipping rectangle set by 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 `Color` and `Screen (Graphics)` for details). If omitted, the current foreground color as set by the `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, `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.
Example
`
'' 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
`
`
' 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
`
Differences from QB

- `target` is new to FreeBASIC

See also

- Circle
- Window
- View (Graphics)