Sign in Join
Wiki copytemporary

BGRABitmap tutorial 1/de: what changed

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

OldNewLine
11Dieses erste Tutorial zeigt, wie Sie die Bibliothek [[BGRABitmap]] einsetzen können.
22
33### Erzeugen Sie ein neues Projekt
44
55Erzeugen Sie eine grafische Anwendung über den Menüpunkt **Projekt \> Neues Projekt...**.
66
77Die Unit des Hauptformulars sollte so aussehen:
88
99``` pascal
1010unit UMain;
1111
1212{$mode objfpc}{$H+}
1313
1414interface
1515
1616uses
1717 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;
1818
1919type
2020
2121 { TForm1 }
2222
2323 TForm1 = class(TForm)
2424 private
2525 { private declarations }
2626 public
2727 { public declarations }
2828 end;
2929
3030var
3131 Form1: TForm1;
3232
3333implementation
3434
3535initialization
3636 {$I UMain.lrs}
3737
3838end.
3939```
4040
4141Falls Sie sie nicht finden, zeigt Ihnen **Strg-F12** eine Dateiliste an.
4242
4343Speichern Sie Ihr Projekt in der Nähe der Bibliothek 'BGRABitmap' über den Menüpunkt **Datei \> Alles speichern**.
4444
4545### Eine Referenz auf BGRABitmap hinzufügen
4646
4747Fügen Sie in der Uses-Klausel gleich hinter 'Dialogs' eine Referenz auf BGRABitmap und BGRABitmapTypes ein.
4848
4949``` pascal
5050uses
5151 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
5252 BGRABitmap, BGRABitmapTypes;
5353```
5454
5555Gehen 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".
5656
5757Wenn 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.
5858
5959Wenn 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.
6060
6161### Fügen Sie einige Zeichenbefehle hinzu
6262
6363Fü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:
6464
6565``` pascal
6666procedure TForm1.FormPaint(Sender: TObject);
6767var bmp: TBGRABitmap;
6868begin
6969 bmp := TBGRABitmap.Create(ClientWidth, ClientHeight, BGRABlack);
7070 bmp.FillRect(20, 20, 100, 40, BGRA(255,192,0), dmSet); //fill an orange rectangle
7171 bmp.Draw(Canvas, 0, 0, True); //render BGRABitmap on the form
7272 bmp.Free; //free memory
7373end;
7474```
7575
7676Wie 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.
7777
7878Die 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.
7979
8080Anschließend folgen ein Farbparameter mit den Komponenten rot/grün/blau und ein Zeichenmodus. Bei 'dmSet' werden einfach die Pixel ersetzt.
8181
8282Vergessen Sie nicht, das Objekt nach der Verwendung wieder frei zu geben, um Speicherlecks zu vermeiden.
8383
8484### Resultierender Code
8585
8686Sie sollten jetzt den folgenden Code haben:
8787
8888``` pascal
8989unit UMain;
9090
9191{$mode objfpc}{$H+}
9292
9393interface
9494
9595uses
9696 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
9797 BGRABitmap, BGRABitmapTypes;
9898
9999type
100100
101101 { TForm1 }
102102
103103 TForm1 = class(TForm)
104104 procedure FormPaint(Sender: TObject);
105105 private
106106 { private declarations }
107107 public
108108 { public declarations }
109109 end;
110110
111111var
112112 Form1: TForm1;
113113
114114implementation
115115
116116{ TForm1 }
117117
118118procedure TForm1.FormPaint(Sender: TObject);
119119var bmp: TBGRABitmap;
120120begin
121121 bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRABlack);
122122 bmp.FillRect(20,20,100,40,BGRA(255,192,0),dmSet);
123123 bmp.Draw(Canvas,0,0,True);
124124 bmp.Free;
125125end;
126126
127127initialization
128128 {$I UMain.lrs}
129129
130130end.
131131```
132132
133133### Starten Sie das Programm
134134
135135Sie sollten ein schwarz gefülltes Fenster mit einem orangen Rechteck darin erhalten.
136136
137-<figure>
138-<img src="BGRATutorial1.png" title="BGRATutorial1.png" />
139-<figcaption>BGRATutorial1.png</figcaption>
140-</figure>
137+![](/wiki-images/e/ea/BGRATutorial1.png)
141138
142139[[BGRABitmap tutorial 2/de|Zum nächsten Tutorial (Laden eines Bildes)]]
143140
144141---
145142*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