Sign in Join
Wiki copytemporary

BGRABitmap tutorial 14/de: what changed

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

OldNewLine
1-[[BGRABitmap tutorial/de|**Home**]] | [[BGRABitmap tutorial 1/de|**Tutorial 1**]] | [[BGRABitmap tutorial 2/de|**Tutorial 2**]] | [[BGRABitmap tutorial 3/de|**Tutorial 3**]] | [[BGRABitmap tutorial 4/de|**Tutorial 4**]] | [[BGRABitmap tutorial 5/de|**Tutorial 5**]] | [[BGRABitmap tutorial 6/de|**Tutorial 6**]] | [[BGRABitmap tutorial 7/de|**Tutorial 7**]] | [[BGRABitmap tutorial 8/de|**Tutorial 8**]] | [[BGRABitmap tutorial 9/de|**Tutorial 9**]] | [[BGRABitmap tutorial 10/de|**Tutorial 10**]] | [[BGRABitmap tutorial 11/de|**Tutorial 11**]] | [[BGRABitmap tutorial 12/de|**Tutorial 12**]] | [[BGRABitmap tutorial 13/de|**Tutorial 13**]] | **Tutorial 14** | [[BGRABitmap tutorial 15/de|**Tutorial 15**]] | [[BGRABitmap tutorial 16/de|**Tutorial 16**]] | [Edit](<http://wiki.lazarus.freepascal.org/index.php?title=Template:BGRABitmap_tutorial_index/de&action=edit>)
1+Dieses Tutorial zeigt Ihnen, wie Sie die Eigenschaft Canvas2D von BGRABitmap einsetzen können. Canvas2D arbeitet als Javascript-2D-Kontext des HTML-Canvas-Objektes.
22
3-Dieses Tutorial zeigt Ihnen, wie Sie die Eigenschaft Canvas2D von BGRABitmap einsetzen können. Canvas2D arbeitet als Javascript-2D-Kontext des HTML-Canvas-Objektes.
3+## Erstes Programm
44
5-## Contents
5+Hier ist ein sehr einfaches Beispiel:
66
7- * 1 Erstes Programm
8- * 2 Komplexe Figuren
9- * 3 Verwendung von Transformationen
10- * 4 Gradienten und Speicherfreigabe
11- * 5 Weitere Beispiele
7+``` pascal
8+procedure TForm1.FormPaint(Sender: TObject);
9+var bmp: TBGRABitmap;
10+ ctx: TBGRACanvas2D;
11+begin
12+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRA(210,210,210));
1213
13-## Erstes Programm
14+ ctx := bmp.Canvas2D;
15+ ctx.fillStyle('rgb(240,128,0)');
16+ ctx.fillRect(30,30,80,60);
17+ ctx.strokeRect(50,50,80,60);
1418
15-Hier ist ein sehr einfaches Beispiel:
16-```
17-procedure TForm1.FormPaint(Sender: TObject);
18- var bmp: TBGRABitmap;
19- ctx: TBGRACanvas2D;
20- begin
21- bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRA(210,210,210));
22-
23- ctx := bmp.Canvas2D;
24- ctx.fillStyle('rgb(240,128,0)');
25- ctx.fillRect(30,30,80,60);
26- ctx.strokeRect(50,50,80,60);
27-
28- bmp.Draw(Canvas,0,0);
29- bmp.Free;
30- end;
19+ bmp.Draw(Canvas,0,0);
20+ bmp.Free;
21+end;
3122```
3223
33-Die Bitmap hat eine Eigenschaft 'Canvas2D', die die Funktionen 'fillRect' und 'strokeRect' zur Verfügung stellt. Der Füllstil (fillStyle) ist festgelegt auf Orange durch die Angabe eines CSS-Farbstrings. Zum Füllen der Figur wird 'fillstyle' verwendet und zum Zeichnen des Randes 'strokestyle'.
24+Die Bitmap hat eine Eigenschaft 'Canvas2D', die die Funktionen 'fillRect' und 'strokeRect' zur Verfügung stellt. Der Füllstil (fillStyle) ist festgelegt auf Orange durch die Angabe eines CSS-Farbstrings. Zum Füllen der Figur wird 'fillstyle' verwendet und zum Zeichnen des Randes 'strokestyle'.
3425
35-Der obige Code ist äquivalent zu diesem Javascript-Code :
36-```
37-var canvas = document.getElementsByTagName("canvas")[0];
38- canvas.width = 200
39- canvas.height = 200
40- if (canvas.getContext){
41- var ctx = canvas.getContext("2d");
42- ctx.fillStyle = "rgb(240,128,0)";
43- ctx.fillRect(30,30,80,60);
44- ctx.strokeRect(50,50,80,60);
45- }
26+Der obige Code ist äquivalent zu diesem Javascript-Code :
27+
28+``` javascript
29+ var canvas = document.getElementsByTagName("canvas")[0];
30+ canvas.width = 200
31+ canvas.height = 200
32+ if (canvas.getContext){
33+ var ctx = canvas.getContext("2d");
34+ ctx.fillStyle = "rgb(240,128,0)";
35+ ctx.fillRect(30,30,80,60);
36+ ctx.strokeRect(50,50,80,60);
37+ }
4638```
4739
48-[![BGRATutorial14a.png](/wiki-images/5/5d/BGRATutorial14a.png)](</File:BGRATutorial14a.png>)
40+![](/wiki-images/5/5d/BGRATutorial14a.png)
4941
5042## Komplexe Figuren
5143
52-Um komplexe Figuren zu zeichnen, ist es notwendig, einen Pfad zu definieren:
53-```
54-procedure pave();
55- begin
56- ctx.fillStyle ('rgb(130,100,255)');
57- ctx.strokeStyle ('rgb(0,0,255)');
58- ctx.beginPath();
59- ctx.lineWidth:=2;
60- ctx.moveTo(5,5);ctx.lineTo(20,10);ctx.lineTo(55,5);ctx.lineTo(45,18);ctx.lineTo(30,50);
61- ctx.closePath();
62- ctx.stroke();
63- ctx.fill();
64- end;
65-
66- begin
67- bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRA(210,210,210));
68- ctx := bmp.Canvas2D;
69- pave();
70- bmp.Draw(Canvas,0,0);
71- bmp.Free;
72- end;
44+Um komplexe Figuren zu zeichnen, ist es notwendig, einen Pfad zu definieren:
45+
46+``` pascal
47+ procedure pave();
48+ begin
49+ ctx.fillStyle ('rgb(130,100,255)');
50+ ctx.strokeStyle ('rgb(0,0,255)');
51+ ctx.beginPath();
52+ ctx.lineWidth:=2;
53+ ctx.moveTo(5,5);ctx.lineTo(20,10);ctx.lineTo(55,5);ctx.lineTo(45,18);ctx.lineTo(30,50);
54+ ctx.closePath();
55+ ctx.stroke();
56+ ctx.fill();
57+ end;
58+
59+begin
60+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRA(210,210,210));
61+ ctx := bmp.Canvas2D;
62+ pave();
63+ bmp.Draw(Canvas,0,0);
64+ bmp.Free;
65+end;
7366```
7467
75-Beachten Sie, dass die Linienbreite durch die Eigenschaft 'LineWidth' festgelegt ist und dass der Pfad mit dem Aufruf von 'BeginPath' anfängt. Falls Sie mehr Information über die Funktionsweise von 'Path' benötigen, siehe: [javascript documentation](<https://developer.mozilla.org/en/Canvas_tutorial/Drawing_shapes>).
68+Beachten Sie, dass die Linienbreite durch die Eigenschaft 'LineWidth' festgelegt ist und dass der Pfad mit dem Aufruf von 'BeginPath' anfängt. Falls Sie mehr Information über die Funktionsweise von 'Path' benötigen, siehe: [javascript documentation](https://developer.mozilla.org/en/Canvas_tutorial/Drawing_shapes).
7669
77-[![Tutorial14b.png](/wiki-images/a/a4/Tutorial14b.png)](</File:Tutorial14b.png>)
70+![](/wiki-images/a/a4/Tutorial14b.png)
7871
7972## Verwendung von Transformationen
8073
81-Jetzt können wir das Dreieck sechs Mal mit einer Drehung zeichnen durch Aufruf der Transformationsfunktionen.
82-```
83-procedure six();
84- var
85- i: Integer;
86- begin
87- ctx.save();
88- for i := 0 to 5 do
89- begin
90- ctx.rotate(2*PI/6);
91- pave();
92- end;
93- ctx.restore();
94- end;
95- begin
96- bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRA(210,210,210));
97- ctx := bmp.Canvas2D;
98- ctx.translate(80,80);
99- six;
100- bmp.Draw(Canvas,0,0);
101- bmp.Free;
102- end;
74+Jetzt können wir das Dreieck sechs Mal mit einer Drehung zeichnen durch Aufruf der Transformationsfunktionen.
75+
76+``` pascal
77+ procedure six();
78+ var
79+ i: Integer;
80+ begin
81+ ctx.save();
82+ for i := 0 to 5 do
83+ begin
84+ ctx.rotate(2*PI/6);
85+ pave();
86+ end;
87+ ctx.restore();
88+ end;
89+begin
90+ bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,BGRA(210,210,210));
91+ ctx := bmp.Canvas2D;
92+ ctx.translate(80,80);
93+ six;
94+ bmp.Draw(Canvas,0,0);
95+ bmp.Free;
96+end;
10397```
10498
105-[![BGRATutorial14c.png](/wiki-images/9/91/BGRATutorial14c.png)](</File:BGRATutorial14c.png>)
99+![](/wiki-images/9/91/BGRATutorial14c.png)
106100
107101## Gradienten und Speicherfreigabe
108102
109-Um Farbverläufe zu ermöglichen, besitzt Canvas2D die Funktionen **createLinearGradient** und **createPattern**. Diese Funktionen geben ein Objekt mit Referenzzählung zurück. Sie müssen dieses nicht explizit freigeben. Es wird freigegeben, wenn keine weitere Referenz auf dieses Objekt mehr vorhanden ist. Zum Beispiel:
110-```
103+Um Farbverläufe zu ermöglichen, besitzt Canvas2D die Funktionen **createLinearGradient** und **createPattern**. Diese Funktionen geben ein Objekt mit Referenzzählung zurück. Sie müssen dieses nicht explizit freigeben. Es wird freigegeben, wenn keine weitere Referenz auf dieses Objekt mehr vorhanden ist. Zum Beispiel:
104+
105+``` pascal
111106var
112- grad: IBGRACanvasGradient2D;
113- begin
114- grad := ctx.createLinearGradient(0,0,320,240);
115- grad.addColorStop(0.3, '#ff0000');
116- grad.addColorStop(0.6, '#0000ff');
117- ctx.fillStyle(grad);
118-
119- grad := ctx.createLinearGradient(0,0,320,240);
120- grad.addColorStop(0.3, '#ffffff');
121- grad.addColorStop(0.6, '#000000');
122- ctx.strokeStyle(grad);
123- ctx.lineWidth := 5;
124-
125- ctx.moveto(160,120);
126- ctx.arc(160,120,100,Pi/6,-Pi/6,false);
127- ctx.fill();
128- ctx.stroke();
129- end;
107+ grad: IBGRACanvasGradient2D;
108+begin
109+ grad := ctx.createLinearGradient(0,0,320,240);
110+ grad.addColorStop(0.3, '#ff0000');
111+ grad.addColorStop(0.6, '#0000ff');
112+ ctx.fillStyle(grad);
113+
114+ grad := ctx.createLinearGradient(0,0,320,240);
115+ grad.addColorStop(0.3, '#ffffff');
116+ grad.addColorStop(0.6, '#000000');
117+ ctx.strokeStyle(grad);
118+ ctx.lineWidth := 5;
119+
120+ ctx.moveto(160,120);
121+ ctx.arc(160,120,100,Pi/6,-Pi/6,false);
122+ ctx.fill();
123+ ctx.stroke();
124+end;
130125```
131126
132-Der Variablen 'grad' sind die Gradientenobjekte zugeordnet, aber es erfolgt kein Aufruf von Free.
127+Der Variablen 'grad' sind die Gradientenobjekte zugeordnet, aber es erfolgt kein Aufruf von Free.
133128
134-[![BGRATutorial14d.png](/wiki-images/9/96/BGRATutorial14d.png)](</File:BGRATutorial14d.png>)
129+![](/wiki-images/9/96/BGRATutorial14d.png)
135130
136131## Weitere Beispiele
137132
138-Andere Beispiele finden Sie im Verzeichnis 'testcanvas2d' des BGRABitmap-Archivs. Die Skripte wurden entnommen von [Jean-Paul Davalan Webseite](<https://web.archive.org/web/20190207062328/http://jean-paul.davalan.pagesperso-orange.fr/lang/jsc/js09.html>) (Internet Archive link), die auch Beispiele zur HTML-Canvas enthält.
133+Andere Beispiele finden Sie im Verzeichnis 'testcanvas2d' des BGRABitmap-Archivs. Die Skripte wurden entnommen von [Jean-Paul Davalan Webseite](https://web.archive.org/web/20190207062328/http://jean-paul.davalan.pagesperso-orange.fr/lang/jsc/js09.html) (Internet Archive link), die auch Beispiele zur HTML-Canvas enthält.
139134
140-[[BGRABitmap tutorial 13/de|Voriges Tutorial (Pixelkoordinaten)]] | [[BGRABitmap tutorial 15/de|Nächstes Tutorial (3D)]]
135+[[BGRABitmap tutorial 13/de|Voriges Tutorial (Pixelkoordinaten)]] \| [[BGRABitmap tutorial 15/de|Nächstes Tutorial (3D)]]
141136
142137---
143-*From the Free Pascal wiki, page "BGRABitmap tutorial 14/de", as the Internet Archive kept it on 2024-08-07. 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).*
138+*From the Free Pascal wiki, page "BGRABitmap tutorial 14/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