Canvas stellt verschiedene Funktionen zum Zeichnen auf ein beliebiges Control zur Verfügung.
Es hat keine eigene Zeichenfläche und auch kein eigenes Handle.
Es muss einem Control zugewiesen werden wenn es benötigt wird. Vorzugsweise Form, Panel
Eigenschaften und Funktionen dürfen erst nach Zuordnung verwendet werden !
Property | Datentyp(Read/Write) | Hinweise |
cHeight | Integer (R) | Weite der Zeichenfläche. Ist der Clientbereich des zugeordneten Control. |
cWidth | Integer (R) | Höhe der Zeichenfläche. Ist der Clientbereich des zugeordneten Control. |
cImageHeight | Integer (R) | Dimension Height des mit cImageFromFile geladenen Bildes. |
cImageWidth | Integer (R) | Dimension Width des mit cImageFromFile geladenen Bildes. |
cImgDC | HDC (R) | hDC des mit cImageFromFile geladenen Bildes |
chDC | HDC (R) | hDC des zugeordneten Control in das gezeichnet wird |
cImageBKColor | COLORREF (R/W) | Bestimmt die Hintergrundfarbe des mit cImageFromFile geladenen Bildes. Nur bei Bildern mit Transparenten Bereichen. Muss vor cImageFromFile gesetzt werden. |
Cursor | Integer (R/W) | Setzt den Cursor. 0=IDC_ARROW (voreingestellt), 1=IDC_CROSS, 2=IDC_SIZEALL, 3=IDC_SIZENESW, 4=IDC_SIZENS , 5=IDC_SIZENWSE ,6=IDC_SIZEWE, 7=IDC_HAND |
cPenColor | COLORREF (R/W) | Stiftfarbe (schwarz voreingestellt) |
cPenWidth | Integer (R/W) | Stiftbreite in Pixel (1 px voreingestellt) |
cPenStyle | Integer (R/W) | 0 = PS_NULL, 1 = PS_SOLID (voreingestellt), 2 = PS_DASH, 3 = PS_DOT, 4 = PS_DASHDOT, 4 = PS_DASHDOTDOT |
cTextColor | COLORREF (R/W) | Textfarbe der Textausgabe |
cRop | UInteger (R/W) | Rasteroperation beim Zeichnen (voreingestellt ist R2_COPYPEN siehe SetRop2 in der Win32Help ) |
SUB | Argumente | Hinweis |
cAttach | (ByVal hWnd As HWND) | Handle des Control in dem gezeichnet werden soll |
Sub cLine | (ByVal StartX As Integer, ByVal StartY As Integer, ByVal EndX As Integer, ByVal EndY As Integer) | Zeichnet eine Linie |
Sub cPolyLine | (ByVal pt As Point Ptr, ByVal nCount As Integer, ByVal fill As Integer) | Zeichnet eine Linie (max 64 Point) pt = Array Ptr mit Koordinaten, Anzahl der enthaltenen Elemente, fill = True füllt mit aktueller Brush und Zeichnet mit aktuellen Pen, sonst nur Linien |
Sub cRectangle | (ByVal X As Integer, ByVal Y As Integer, ByVal Weite As Integer, ByVal Höhe As Integer) | Zeichnet ein Rechteck mit akt. Pen und füllt es mit akt. Brush. Argument 3 + 4 sind Breite und Höhe keine Koordinaten |
Sub cEllipse | (ByVal X As Integer, ByVal Y As Integer, ByVal Weite As Integer, ByVal Höhe As Integer) | Zeichnet eine Ellipse mit akt. Pen und füllt es mit akt. Brush. Argument 3 + 4 sind Breite und Höhe keine Koordinaten |
Sub cFillRect | (ByVal cr As RECT Ptr ) | Füllt einen Breich mit der akt. Brush Auch hier rc.Right und rc.Bottom die Höhe und Breite des Bereiches der gefüllt werden soll |
Sub cTextOut | (ByVal x As Integer,ByVal y As Integer,sText As String ) | Text ausgeben |
Sub cTextRect | (ByVal canvRC As RECT Ptr ,sText As String ,ByVal BGColor As UInteger) | Text ausgeben zentriert im Rect . (rc.Right und rc.Bottom ist Höhe und Breite ) BGColor = Farbe des Hintergrunds oder -1 für dann Transparent |
Sub cCopyRect | (ByVal canvRC As RECT Ptr , ByVal quellDC As HDC, ByVal quellRC As RECT Ptr) | Ist zum kopieren des mit cImageFromFile geladenen Bildes (oder Teile davon) |
Sub cSaveToFile | ( filename As String) | Speichert
Canvas als Bild. Wenn z.B. filename "canvas.jpg" wird als JPEG
gespeichert. Abhängig davon was Installiert. Meist: bmp;jpg;png;gif;tiff |
Sub cImageFromFile | ( filename As String) | Läd ein Bild (jpg,png,bmp,gif,tiff) |
Sub cHatchBrush | (ByVal fnStyle As integer ,ByVal nColor As COLORREF) | Generiert eine HatchBrush in der Farbe nColor. fnStyle = einer der Style : HS_BDIAGONAL , HS_CROSS, HS_DIAGCROSS, HS_FDIAGONAL, HS_HORIZONTAL , HS_VERTICAL (siehe auch Win32Help) |
Sub cSolidBrush | ( ByVal nColor As COLORREF) | Generiert eine SolidBrush in der Farbe nColor |
Sub cPatternBrush | ( sName As String) | Generiert eine PatternBrush.sName muss ein Bitmap sein aus Datei oder Resource |
Function cTextHeight | ( s As String) As Integer | Text-Höhe in px des übergebenen Text |
Function cTextWidth | ( s As String) As Integer | Text-Länge in px des übergebenen Text |
Sub cSize | (ByVal w As Integer,ByVal h As Integer) | Setzt die Werte cHeight(h) und cWidth(w). Diese Werte werden bei Attach automatisch gesetzt. |
Sub cFont | (Face As String, ByVal size As Integer, ByVal bold As Integer, ByVal italic As Integer, ByVal underlin As Integer) |
Schrift-Name Schriftgröße 1=bold,0=normal 1=italic,0=normal 1=underlin,0=normal |
Sub cRestoreFont | keine | Stellt die Schrift von vor Sub cFont wieder her. Sollte immer nach Verwendung der geänderten Schrift aufgerufen werden |
#Include "winFBgui.bi"
Dim Shared As FForm form1
Dim Shared As FPanel panel1
Dim Shared As FCanvas Ptr boxCanvas
boxCanvas=New FCanvas
Sub Form1_KeyDown(nKey AS Integer,lKeyStatus As Integer)
If nKey = 27 Then
Form1.FormClose
End If
If nKey = 67 Then
form1.Visible = FALSE
boxCanvas->cSaveToFile("Desktop.Jpg")
form1.Visible = TRUE
End If
End Sub
form1.Create("Testform",0,0,400,280)
form1.onKeyDown=@Form1_KeyDown
panel1.Create(form1.Handle,10,50,360,100)
panel1.TextAlign = 4 ' mehrzeilig mitte
panel1.Caption = Chr(13,10) + "Taste c speichert den Desktop nach Desktop.jpg" + Chr(13,10,13,10) + "Taste ESC beendet das Programm"
Dim As HWND hDesk
hDesk = GetDesktopWindow
boxCanvas->cAttach(hDesk) '<-- Zuordnung zum Desktop'
form1.Show
Delete boxCanvas
ExitProcess(0)
End
' Der komplette Desktop wird in Datei gespeichert