Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TBitMap zeichnen
der organist - Mi 13.08.08 08:14
Titel: TBitMap zeichnen
Ich bin verzweifelt... Ich versuche den Befehl, den mir mein Freund gegeben hat, ich schaue mir das Delphi-Forum und die Borland Hilfe an, aber ich komme nicht weiter.
Wie zeichnet man eine BitMap (nicht original-Größe)? Bitte für einen Anfänger erklären!
iKilledKenny - Mi 13.08.08 08:22
Der Ansatz ist falsch. Man erzeugt eine Bitmap und zeichnet auf deren Canvas.
Pseudocode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| bmp := TBitmap.Create; bmp.Width := 150; bmp.Height := 200; bmp.Canvas.Brush.Color := clWhite; bmp.Canvas.FillRect (Rect (0,0,bmp.Width,bmp.Height)); bmp.Canvas.Brush.Color := clRed; bmp.Canvas.FillRect (Rect (10,10,20,20)); |
der organist - Mi 13.08.08 16:03
ok, das funzt, danke!
Hidden - Mi 13.08.08 16:11
Hi,
Interessant, dass das geholfen hat. :lol:
Ich hab von Stretchdraw gesprochen. Bitmap erzeugen, etc., haben wir schon gemacht :)
mfG,
CJ(lux) - Mo 30.08.10 20:51
HI!
ehm, ich denke noch nie Bitmaps benutzt zu haben... wolte dieses Beispiel testen und es scheint zu funktionieren... wäre da nur nicht das Problem dass mir nichts angezeigt wird^^ ;)
bitte um Hilfe..
*EDIT* oder braucht man dazu noch welche Komponente? ich habe den Code einfach nur hinter ein Button gepastet..
mfG
CJ
der organist - Mo 30.08.10 21:07
naja, nen bisschen mehr Code dürfen wir erwarten? Sonst müssen wir raten und dann kommt sowas heraus wie: Hast du auch irgendwo nen Befehl zum Zeichnen drin?
EDIT: Ich würde ja behaupten, du brauchst ne Paintbox auf deiner Form. Dann Erzeugst du deine Bitmap (und setzt die Größe! Ich glaube, Daniel, das war das, was mir damals entfallen war). Dann zeichnest du, lädst mit deiner Bitmap herum, wie du lustig bist und dann lässt du die Paintbox die Bitmap zeichnen.
Gruss,
Hidden - Mo 30.08.10 21:20
Moin!
Der Quelltext oben erzeugt eine Bitmap und merkt sich in der Variable bmp, wo im Quelltext diese liegt.
Dann wird ein rotes Rechteck in die obere linke Ecke der Bitmap gemalt(10, 10 liegt nahe am Ursprung des Koordinatensystems, das ist oben links).
Versuche es einmal so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure Button1Press(Sender: Tobject); var bmp: TBitmap; begin bmp := TBitmap.Create; try bmp.SetSize(150, 200); bmp.Canvas.Brush.Color := clWhite; bmp.Canvas.FillRect (Rect (0,0,bmp.Width,bmp.Height)); bmp.Canvas.Brush.Color := clRed; bmp.Canvas.FillRect (Rect (10,10,20,20)); if SaveDialog1.Execute then bmp.SaveToFile(SaveDialog1.FilePath); finally bmp.Free; end; end; |
Die Unit Graphics muss eingebunden sein, und einen SaveDialog brauchst du auf dem Formular für diese Methode. Der try-finally-Block ist zum Verständnis nicht weiter wichtig. Der sorgt nur dafür dass der Speicher aujch bei Fehlern auf jeden Fall wieder freigegeben wird.
Eine andere Methode ist die Graphische Ausgabe auf einer visuellen Komponente wie TPaintbox oder TImage auf dem Formular.
Gemeinsam haben Paintbox, Image, Formular und TBitmap das Zeichenobjekt, Canvas. Eine Bitmap kannst du mit den Methoden Draw und Stretchdraw von TCanvas auf ein beliebiges Canvas kopieren. Wenn das Zeichnen in Schritten geschieht, nimmt man deshalb häufig zuerst eine Bitmap im Speicher und kopiert erst im letzten Moment auf eine visuelle Komponente.
lg,
PS: Moin, Lukas :wave: :P
CJ(lux) - Mo 30.08.10 21:31
der organist hat folgendes geschrieben : |
naja, nen bisschen mehr Code dürfen wir erwarten? Sonst müssen wir raten und dann kommt sowas heraus wie: Hast du auch irgendwo nen Befehl zum Zeichnen drin?
....
EDIT: Ich würde ja behaupten... ...wie du lustig bist... |
ich sage nichts ;) trotzdem vielen dank für den Post, habe es jetzt hinbekommen :)
auch danke ich Hidden für die Hilfe :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!