![]() |
Canvas probleme
Hi @ all,
erst mal vorweg ich war schon lange hier, aber irgendwie bekomm ich mein altes pass net zugeschickt aber egal, zum problem: Ich erstelle ein Bitmap über das ganze Formular, und male ein Strich auf das Canvas, male dann wieder ein rechteck ganz drüber, und nun würde ich gerne einen anderen Strich zeichen. Dieser wird aber nicht dargestellt, hab zwar seit nem monat net mehr programiert, aber ich glaube ich bin echt total eingerostet.... hier mal die "relevanten" Stellen
Delphi-Quellcode:
bm ist ein BitMap welches im Private bereich des Forms steht
procedure TForm1.Button1Click(Sender: TObject);
begin bm.Canvas.LineTo(100,100); end; procedure TForm1.Button2Click(Sender: TObject); begin With bm do begin Canvas.Brush.Color := Form1.Color; Canvas.Rectangle(0,0,ClientWidth, ClientHeight); end; end; procedure TForm1.FormCreate(Sender: TObject); begin BM := TBitmap.Create; bm.Width := ClientWidth; bm.Height := ClientHeight; end; Hoffe mir kann jemand helfen |
Re: Canvas probleme
Könntest du noch das kopieren des Bitmaps auf die Form zeigen ? :)
|
Re: Canvas probleme
Jetzt wo du es sagst...
aber ich bin grade echt zu doof, ne eigenschaft parent gibts bei bitmap doch nicht. sry ich steh grade echt auf dem schlauch.................. |
Re: Canvas probleme
Du musst mit BitBlt das bitmap auf den Canvas pressen.
Such mal im Forum, war schon oft da. Gruß Alexander |
Re: Canvas probleme
Naja...du zeichnest wunderbar aufs Bitmap..aber das wird erstmal nirgends angezeigt, ist also sozusagen unsichtbar.
Um das ganze anzugzeigen mußt du das Bitmap auch auf die Form zeichnen. Dafür würde sich das Ereignis onPaint des Formulars anbieten. Das ganze könnte dann so aussehen (ungefähr !):
Delphi-Quellcode:
Damit solltest du dein Bitmap auch auf der Form sehen.
procedure TForm1.FormPaint(Sender:TObject);
begin bitblt(canvas.handle,Clientrect.left,clientrect.top,clientwidth,clientheight,bm.canvas.handle,0,0,SRCCCOY); end; |
Re: Canvas probleme
gott sprach es werde eine linie, und es wurde eine ;)
falls jemand diesen Beitrag noch mal braucht, der letze parameter in der funktion muss: SRCCOPY lauten ;) danke euch |
Re: Canvas probleme
bitblt ? Es gibt auch eine Canvas.Draw Methode.
Delphi-Quellcode:
:zwinker:
procedure TFormXYz.FormPaint(Sender: TObject);
begin Canvas.Draw(0,0, MyBitmap); end; |
Re: Canvas probleme
Canvas.Draw hat aber nicht nur Vorteile. Beim TBitmap kümmert sich das TBitmap zum Beispiel dann um Transparenz etc. und macht mehr als man eignetlich will. BitBlt hingegen macht wirkich nichts anderes als das Bild auf die Canvas zu blitten. Schau dir am besten mal TBitmap.Draw an (Draw ist eine Protected-Methode), dann siehst du was da noch alles unnötiges passiert was man in dem Fall gar nicht will/benötigt. So wird zum Beispiel auch intern StretchBlt aufgerufen was gar nicht nötig ist wenn das Bild bereits in der Größe ist die raus gegeben werden soll.
|
Re: Canvas probleme
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz