Appendix A: QCANVAS
Rapid-Q Documentation by William Yu (c)1999-2000 |
Appendix A: QCANVAS |
|
QCANVAS Component
QCanvas is an empty image for painting on. Instead of loading your images,
you must draw them on the QCanvas.
QCanvas Properties
Field | Type | R/W | Default | Support |
|
|
|
|
|
Align | INTEGER | RW | alNone | W |
| Align determines how the control aligns within its parent control.
|
ClientHeight | INTEGER | RW | | W |
ClientWidth | INTEGER | RW | | W |
Color | INTEGER | RW | | WXG |
CopyMode | INTEGER | RW | cmBlackness | W |
Cursor | INTEGER | RW | crDefault | W |
Enabled | INTEGER | RW | True | WXG |
Font | QFONT | W | | W |
Height | INTEGER | RW | | WXG |
Hint | STRING | RW | | W |
Left | INTEGER | RW | 0 | WXG |
Parent | QFORM/QPANEL/QTABCONTROL | W | | WXG |
Pixel | 2D ARRAY of INTEGER | RW | | WXG |
PopupMenu | QPOPUPMENU | W | | W |
ShowHint | INTEGER | RW | False | W |
Tag | INTEGER | RW | | WXG |
Top | INTEGER | RW | 0 | WXG |
Width | INTEGER | RW | | WXG |
Visible | INTEGER | RW | True | WXG |
QCanvas Methods
Method | Type | Description | Params | Support |
|
|
|
|
|
Circle | SUB (x1%, y1%, x2%, y2%, c%, fill%) | Draw & Fill Circle | 6 | WXG |
CopyRect | SUB (D, Image, S) | D and S are QRECTs, Image can be a QImage, QCanvas, or QBitmap | 3 | W |
| Example (copies QIMAGE to canvas at 10,10):
DIM Destination AS QRECT
DIM Source AS QRECT
DIM Image AS QIMAGE
Image.BMP = "whatever.bmp"
SUB CanvasPaint (Sender AS QCANVAS)
WITH Destination
.Top = 10
.Left = 10
.Right = .Left+Image.Width
.Bottom = .Top+Image.Height
END WITH
WITH Source
.Top = 0
.Left = 0
.Right = Image.Width
.Bottom = Image.Height
END WITH
Sender.CopyRect(Destination, Image, Source)
END SUB
DIM Canvas AS QCANVAS
Canvas.OnPaint = CanvasPaint
|
Draw | SUB (x%, y%, BMP) | Draw Bitmap on Canvas | 3 | WG |
| Details:
BMP can be any BMP property from QBitmap, QImage, QImageList, etc. any component with a BMP property is fine.
Examples:
DIM Image1 AS QIMAGE
Image1.BMP = "whatever.bmp"
DIM Image2 AS QBITMAP
Image2.BMP = "whatever.bmp"
SUB CanvasPaint (Sender AS QCANVAS)
Sender.Draw(0, 0, Image1.BMP)
Sender.Draw(50, 50, Image2.BMP)
END SUB
DIM Canvas AS QCANVAS
Canvas.OnPaint = CanvasPaint
|
FillRect | SUB (x1%, y1%, x2%, y2%, c%) | Draws & Fills a rectangle | 5 | WXG |
Line | SUB (x1%, y1%, x2%, y2%, c%) | Draws a line | 5 | WXG |
Paint | SUB (x%, y%, c%, borderc%) | Fill Region | 4 | WXG |
Pset | SUB (x%, y%, c%) | Pixel plot | 3 | WXG |
Rectangle | SUB (x1%, y1%, x2%, y2%, c%) | Draws a rectangle | 5 | WXG |
Repaint | SUB | Force repainting | 0 | W |
Rotate | SUB (xOrigin%, yOrigin%, Angle%) | Rotates entire canvas at specified origin | 3 | W |
RoundRect | SUB (x1%, y1%, x2%, y2%, x3%, y3%, c%) | Draws & Fills a rounded rectangle | 7 | W |
StretchDraw | SUB (Rect AS QRECT, BMP) | Draw image and stretch to fit inside Rect | 2 | W |
TextHeight | FUNCTION (Text$) AS WORD | Returns the height, in pixels, of Text$ string | 1 | W |
TextWidth | FUNCTION (Text$) AS WORD | Returns the width, in pixels, of Text$ string | 1 | W |
TextRect | SUB (Rect AS QRECT, x%, y%, S$, fc%, bc%) | Write text, and clip within region Rect | 6 | W |
TextOut | SUB (x%, y%, S$, fc%, bc%) | Writes text to image | 5 | WXG |
QCanvas Events
Event | Type | Occurs when... | Params | Support |
|
|
|
|
|
OnClick | VOID | User clicked on canvas | 0 | WXG |
OnDblClick | VOID | User double clicked on canvas | 0 | W |
OnMouseDown | SUB (Button%, X%, Y%, Shift%) | Mouse button held down | 4 | WXG |
OnMouseMove | SUB (X%, Y%, Shift%) | Mouse moves | 3 | WXG |
OnMouseUp | SUB (Button%, X%, Y%, Shift%) | Mouse button is released | 4 | WXG |
OnPaint | VOID | Receives WM_PAINT message | 0 | WXG |
QCanvas Examples
' Pixel by pixel credit scroller for Rapid-Q by William Yu
DIM Canvas AS QCanvas
DIM Form AS QForm
DIM Timer1 AS QTimer
DIM Font AS QFont
DIM Y AS INTEGER
Y = -20
SUB Resize
Canvas.Height = Form.ClientHeight
Canvas.Width = Form.ClientWidth
END SUB
SUB Paint
Canvas.Textout (65,Y-30,"Beware the power of Rapid-Q!", &H00FF00, 0)
Canvas.Textout (30,Y,"Credit Scroller written in Rapid-Q by William Yu", &HFFFFFF, 0)
END SUB
SUB TimerOver
Timer1.Interval = 1 '' Can't go any lower!
Y = Y + 1 '' Pixel by pixel!
Paint
END SUB
Form.Width = 400
Form.Height = 200
Form.Center
Form.Color = 0
Font.Name = "Arial"
Font.Size = 12
Font.Color = &H00FF00
Canvas.Parent = Form
Canvas.Font = Font
Canvas.Color = 0
Canvas.OnPaint = Paint
Timer1.Interval = 1
Timer1.OnTimer = TimerOver
Form.Onresize = Resize
Form.ShowModal
|
|