![]() |
Canvas in TBitmap ???
Hi,
hab mal wieder eine sicherlich leicht zu beantwortende Frage für euch. Hab schon oft gelesen, dass man z.Bsp.: auf eine PaintBox etwas zeichnet und dies dann in TImage umwandeln kann. Ist dies richtig und welche Vorteile würde mir das bringen. Würde mich über zahlreiche Antworten freuen - denkt bitte daran ich bin kein Informatiker nur ein einfacher Info-Schüler :wink: !! Vielen Dank |
Re: Canvas in TImage ???
ich vermute du kannst die bitmap der paintbox der bitmap des Images mit assign zuweisen, jedoch seh ich da keinen Sinn. Warum erst Paintbiox nhemen dann auf das image knallen wenn man auch gleich nen Image nehmen kann?
Also ich nehme für so zeichen zeugs immer nen TImage |
Re: Canvas in TImage ???
Eine PaintBox ist schneller.
Du brauchst dann kein Image, um das Bild der Paintbox zu speichern, falls du das (Image1.SaveToFile()) vorhast. Einfach ein Bitmap erstellen und da den Inhalt der Paintbox draufknallen. |
Re: Canvas in TImage ???
"Zeichne" auf eine TBitmap im "Hintergrund".
Wenn du alles gezeichnet hast, malst du alles über Canvas.Draw(x,y, TBitmap) auf dein Formular. Im OnPaint Ereignis deines Fensters zeichnest du die Grafik neu. |
Re: Canvas in TImage ???
bitblt wäre performanter. da fallen einige überprüfungen weg in der vcl
|
Re: Canvas in TBitmap ???
Hi,
ich merk gerade, dass ich ein inhaltlichen Fehler eingebaut habe. Ich möcht natürlich wissen wie ich ein mit Canvas gezeichnetes Bild (über PaintBox) in TBitmap transformieren kann. Ich bitte um möglichst leicht verständliche Code-Schnipsel oder alles was mir weiter hilft. cu |
Re: Canvas in TBitmap ???
Hallo, ich hoffe, dass der folgende Code richtig in meinem Kopf abgespeichert ist!
Du benötigst ne PaintBox!
Delphi-Quellcode:
Nun kannst du durch die Canvas Eigenschaft der Bitmap alles Zeichenoperationen durchführen!
var
Bitmap: TBitmap; ... procedure TForm1.FormCreate(Sender: TObject); begin Bitmap:= TBitmap.Create; //erstellt eine Bitmap Bitmap.PixelFormat:= pf32bit; //Bitmap erhält eine Bittiefe von 32 Bit (hohe Qualität) Bitmap.Heigth:= PaintBox1.Heigth; //Höhe der Bitmap ist gleich der Höhe der Paintbox Bitmap.Width:= Paintbox1.Width; //Breite der Bitmap ist gleich der Breite der Paintbox PaintBox1.Canvas.Draw(0,0,Bitmap); //Bitmap wird in Paintbox gezeichnet Bitmap.SaveToFile('C:\1.bmp'); //Bitmap wird als Bitmap auf Festplatte abgespeichert end; |
Re: Canvas in TBitmap ???
thx @ hansklok ,damit kann ich was anfangen
|
Re: Canvas in TBitmap ???
Hallo,
habe auch versucht das Bild einer Paintbox in ein Bitmap zu zeichnen und dieses dann abzuspeichern. Habe schon verschiedene Methoden probiert, aber keine hat funktioniert. Habe es jetzt auch einmal mit dem Code von hansklok probiert. Damit erhielt ich keine Fehlermeldung (musste nur heigth in height umändern) und es wurde auch etwas gespeichert. Allerdings wurde dabei der Inhalt meiner Paintbox gelöscht und die gespeicherte Datei ist auch nur weiß, also leer. Außerdem würde ich gerne selber einen Namen für das Bild eingeben und den Speicherort bestimmen. Dies kann man doch dann eigentlich nur mit einem SaveDialog machen, oder? Also so etwa.
Code:
Dabei erhalte ich allerdings immer die Fehlermeldung undefinierter Bezeichner SaveToFile oder so oder mein Programm stürzt ab, sobald ich auf Speicher klicke.
Bitmap.SaveToFile(SaveDialog1.Filename);
Waran liegt das? Auch mit picture.savetofile funktioniert das ganze nicht. wäre wriklich toll, wenn mir jemand weiterhelfen könnte. schonmal vielen dank im voraus!! liebe grüße san |
Re: Canvas in TBitmap ???
Zitat:
ich habe bisher nur sehr wenig mit tcanvas gearbeitet, aber muss es nicht anstatt
Delphi-Quellcode:
so heißen
PaintBox1.Canvas.Draw(0,0,Bitmap); //Bitmap wird in Paintbox gezeichnet
Delphi-Quellcode:
wenn ich mich irre verbessert mich bitte.
Bitmap.Canvas.Draw(0,0,PaintBox1); //Bitmap wird in Paintbox gezeichnet
mfg das magier |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz