FCanvas

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 !

PropertyDatentyp(Read/Write)Hinweise
cHeightInteger (R) Weite der Zeichenfläche. Ist der Clientbereich des zugeordneten Control.
cWidthInteger (R) Höhe der Zeichenfläche. Ist der Clientbereich des zugeordneten Control.
cImageHeightInteger (R) Dimension Height des mit cImageFromFile geladenen Bildes.
cImageWidthInteger (R) Dimension Width des mit cImageFromFile geladenen Bildes.
cImgDCHDC (R) hDC des mit cImageFromFile geladenen Bildes
chDCHDC (R) hDC des zugeordneten Control in das gezeichnet wird
cImageBKColorCOLORREF (R/W) Bestimmt die Hintergrundfarbe des mit cImageFromFile geladenen Bildes. Nur bei Bildern mit Transparenten Bereichen. Muss vor cImageFromFile gesetzt werden.
CursorInteger (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
cPenColorCOLORREF (R/W) Stiftfarbe (schwarz voreingestellt)
cPenWidthInteger (R/W) Stiftbreite in Pixel (1 px voreingestellt)
cPenStyleInteger (R/W) 0 = PS_NULL, 1 = PS_SOLID (voreingestellt), 2 = PS_DASH, 3 = PS_DOT, 4 = PS_DASHDOT, 4 = PS_DASHDOTDOT
cTextColorCOLORREF (R/W) Textfarbe der Textausgabe
cRopUInteger (R/W) Rasteroperation beim Zeichnen (voreingestellt ist R2_COPYPEN siehe SetRop2 in der Win32Help )
SUB ArgumenteHinweis
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
Beispiel :
    
#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