Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Linie zeichnen, ohne das Bitmap zu 'beschädigen' (https://www.delphipraxis.net/86289-linie-zeichnen-ohne-das-bitmap-zu-beschaedigen.html)

mhuck 12. Feb 2007 11:15


Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Hallo,

ich brauche für ein grafisches Analyseprogramm ein großes Cursor-Fadenkreuz. Gibt es eine einfache Prozedur, um so ein Fadenkreuz selbst mit Linien zu zeichnen, wobei das darunterliegende Bitmap natürlich bei jeder Bewegung dieses Fadenkreuzes wiederhergestellt werden soll ?!

Matthias Huck

hsg 12. Feb 2007 11:27

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Nimm ein zweites Bitmap.
Beim malen des Kreuzes malst du zuerst das originale Bitmap und dann darauf dein Fadenkreuz.

mhuck 12. Feb 2007 12:06

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Das heißt, du würdest bei jeder Bewegung des Fadenkreuzes einfach das komplette Bitmap neu kopieren ? Ich hätte nicht gedacht, daß das schnell genug geht, aber ich werde es mal versuchen ...

Danke

hsg 12. Feb 2007 12:17

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Das Kopieren des Bitmaps ist eine Speicher-Operation, von daher sollte sie schnell gehen (BitBlt wäre das Stichwort). Aus diesem Grund benutzt man ja auch Bitmaps beim DoubleBuffering => male auf ein Bitmap und kopiere das dann auf das Canvas um Flackern zu vermeiden.

bitsetter 12. Feb 2007 12:25

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Noch eine Möglichkeit, mit pmNotXor kann seine gezeichnete Linie wieder löschen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin//Kreuz Zeichnen
  Image1.Picture.Bitmap.Canvas.Pen.Mode:= pmNotXor;
  Image1.Picture.Bitmap.Canvas.MoveTo(0, 16);
  Image1.Picture.Bitmap.Canvas.LineTo(32, 16);
  Image1.Picture.Bitmap.Canvas.MoveTo(16, 0);
  Image1.Picture.Bitmap.Canvas.LineTo(16, 32);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin//Kreuz wieder löschen
  Image1.Picture.Bitmap.Canvas.Pen.Mode:= pmNotXor;
  Image1.Picture.Bitmap.Canvas.MoveTo(0, 16);
  Image1.Picture.Bitmap.Canvas.LineTo(32, 16);
  Image1.Picture.Bitmap.Canvas.MoveTo(16, 0);
  Image1.Picture.Bitmap.Canvas.LineTo(16, 32);
end;

Union 12. Feb 2007 12:25

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Das ist die beste Methode. Nur muss für das normale Zeichnen pmCopy verwendet werden.

mhuck 13. Feb 2007 10:24

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Danke,
beide Methoden kann ich an bestimmten Stellen meines Programms gebrauchen !

Noch eine Frage:
Die Hilfe von Delphi 2005 scheint ziemlich unvollständig zu sein; über diese Sachen finde ich überhaupt nicht. Kann mir jemand sagen, wo man sich in Sachen Grafikfunktionen informieren kann ? Oder übersehe ich in der Hilfe etwas ?

TonyR 13. Feb 2007 10:52

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
ein bisschen was steht bei dsdt.info zu bitmaps und zeichnen!

mhuck 13. Feb 2007 11:45

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Ja, das hatte ich schon gefunden.
Ich bin etwas schockiert, daß in der (neueren) Delphi-Hilfe grundlegende Begriffe nicht mehr erklärt werden; z.B. gibt die Suche nach 'TColor' keinen einzigen Treffer, und das gilt für viele Begriffe.
Ist das ein allgemein bekanntes Problem, daß die Hilfe schlechter geworden ist ?
Ich meine z.B., daß bei meinem alten Delphi6 viel mehr drin stand als bei Delphi 2005....

halinchen 16. Feb 2007 09:40

Re: Linie zeichnen, ohne das Bitmap zu 'beschädigen'
 
Hi!

Ich habe gerade deinen letzen Beitrag gelesen.
Auf http://www.freeware.de habe ich durch Zufall die Hilfe von Delphi 7 für Delphi 2005 gesehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz