Sign in Join
Wiki copytemporary

BGRABitmap tutorial 1/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: BGRABitmap tutorial 1/de

OldNewLine
1+Dieses erste Tutorial zeigt, wie Sie die Bibliothek [[BGRABitmap]] einsetzen können.
2+
3+### Erzeugen Sie ein neues Projekt
4+
5+Erzeugen Sie eine grafische Anwendung über den Menüpunkt **Projekt \> Neues Projekt...**.
6+
7+Die Unit des Hauptformulars sollte so aussehen:
8+
9+``` pascal
10+unit UMain;
11+
12+{$mode objfpc}{$H+}
13+
14+interface
15+
16+uses
17+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;
18+
19+type
20+
21+ { TForm1 }
22+
23+ TForm1 = class(TForm)
24+ private
25+ { private declarations }
26+ public
27+ { public declarations }
28+ end;
29+
30+var
31+ Form1: TForm1;
32+
33+implementation
34+
35+initialization
36+ {$I UMain.lrs}
37+
38+end.
39+```
40+
41+Falls Sie sie nicht finden, zeigt Ihnen **Strg-F12** eine Dateiliste an.
42+
43+Speichern Sie Ihr Projekt in der Nähe der Bibliothek 'BGRABitmap' über den Menüpunkt **Datei \> Alles speichern**.
44+
45+### Eine Referenz auf BGRABitmap hinzufügen
46+
47+Fügen Sie in der Uses-Klausel gleich hinter 'Dialogs' eine Referenz auf BGRABitmap und BGRABitmapTypes ein.
48+
49+``` pascal
50+uses
51+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
52+ BGRABitmap, BGRABitmapTypes;
53+```
54+
55+Gehen Sie zu den Compileroptionen mit dem Menüpunkt **Projekt \> Projekteinstellungen \> Compilereinstellungen**. Im Pfad für 'Andere Units' fügen Sie den relativer Pfad zu BGRABitmap hinzu. Zum Beispiel, wenn BGRABitmap in einem Verzeichnis neben dem Ihres Projektes ist, würde der relative Pfad lauten: "..\BGRABitmap".
56+
57+Wenn Sie die BGRABitmap-Dateien in Ihren Projektordner kopieren, brauchen Sie keinen solchen Suchpfad angeben. Dennoch, das ist nicht empfehlenswert, weil es bei mehreren Projekten, die diese Bibliothek verwenden, umständlich wäre, auf eine neue Version der Bibliothek zu aktualisieren.
58+
59+Wenn Sie sich jetzt mit den relativen Pfaden verirrt haben, können Sie auch die Unit BGRABitmap zu Ihrem Projekt hinzufügen (und damit auch den relativen Pfad). Öffnen Sie dazu innerhalb Ihres Projektes die Datei 'bgrabitmap.pas'. Wählen Sie den Menüpunkt **Projekt \> Datei im Editor ins Projekt aufnehmen**. Lazarus fragt Sie dann, ob Sie die Datei und das Verzeichnis zu Ihrem Projekt hinzufügen wollen.
60+
61+### Fügen Sie einige Zeichenbefehle hinzu
62+
63+Fügen Sie ein Ereignis zum Zeichnen hinzu. Dazu klicken Sie auf das Formular, gehen zum Objektinspektor, zum Karteireiter Ereignisse und doppelklicken Sie auf die Zeile 'OnPaint'. Lazarus fügt der Unit des Hauptformulars automatisch einen FormPaint-Handler hinzu. Ergänzen Sie zum Beispiel den folgenden Code:
64+
65+``` pascal
66+procedure TForm1.FormPaint(Sender: TObject);
67+var bmp: TBGRABitmap;
68+begin
69+ bmp := TBGRABitmap.Create(ClientWidth, ClientHeight, BGRABlack);
70+ bmp.FillRect(20, 20, 100, 40, BGRA(255,192,0), dmSet); //fill an orange rectangle
71+ bmp.Draw(Canvas, 0, 0, True); //render BGRABitmap on the form
72+ bmp.Free; //free memory
73+end;
74+```
75+
76+Wie Sie sehen, deklarieren wir eine Variable TBGRABitmap und erzeugen sie anschließend. Es gibt mehrere unterschiedliche Konstruktoren für TBGRABitmap. Dieser hier verwendete erzeugt eine Bitmap der Größe ClientWidth x ClientHeight und füllt sie mit Schwarz. ClientWidth und ClientHeight sind Eigenschaften des Formulars, die den für Zeichnungen verfügbaren Platz des Formulars angeben.
77+
78+Die Prozedur FillRect erwartet die üblichen Parameter zum Zeichnen eines Rechtecks, das ist die obere, linke Ecke gefolgt von der unteren, rechten Ecke plus 1. Das bedeutet, dass das Pixel bei (100,40) vom Rechteck ausnommen ist.
79+
80+Anschließend folgen ein Farbparameter mit den Komponenten rot/grün/blau und ein Zeichenmodus. Bei 'dmSet' werden einfach die Pixel ersetzt.
81+
82+Vergessen Sie nicht, das Objekt nach der Verwendung wieder frei zu geben, um Speicherlecks zu vermeiden.
83+
84+### Resultierender Code
85+
86+Sie sollten jetzt den folgenden Code haben:
87+
88+``` pascal
89+unit UMain;
90+
91+{$mode objfpc}{$H+}
92+
93+interface
94+
95+uses
96+ Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
97+ BGRABitmap, BGRABitmapTypes;
98+
99+type
100+
101+ { TForm1 }
102+
103+ TForm1 = class(TForm)
104+ procedure FormPaint(Sender: TObject);
105+ private
106+ { private declarations }
107+ public
108+ { public declarations }
109+ end;
110+
111+var
112+ Form1: TForm1;
113+
114+implementation
115+
116+{ TForm1 }
117+
118+procedure TForm1.FormPaint(Sender: TObject);
119+var bmp: TBGRABitmap;
120+begin
121+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRABlack);
122+ bmp.FillRect(20,20,100,40,BGRA(255,192,0),dmSet);
123+ bmp.Draw(Canvas,0,0,True);
124+ bmp.Free;
125+end;
126+
127+initialization
128+ {$I UMain.lrs}
129+
130+end.
131+```
132+
133+### Starten Sie das Programm
134+
135+Sie sollten ein schwarz gefülltes Fenster mit einem orangen Rechteck darin erhalten.
136+
137+<figure>
138+<img src="BGRATutorial1.png" title="BGRATutorial1.png" />
139+<figcaption>BGRATutorial1.png</figcaption>
140+</figure>
141+
142+[[BGRABitmap tutorial 2/de|Zum nächsten Tutorial (Laden eines Bildes)]]
143+
144+---
145+*From the Free Pascal wiki, page "BGRABitmap tutorial 1/de", as it stood on 2021-05-08 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history