Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   PaintBoxPaint Draw Reihenfolge. (https://www.delphipraxis.net/178616-paintboxpaint-draw-reihenfolge.html)

Bjoerk 17. Jan 2014 17:47

PaintBoxPaint Draw Reihenfolge.
 
Ich hab folgendes drinstehen.
Delphi-Quellcode:
procedure TDigensForm.PaintBoxPaint(Sender: TObject);
begin
  PaintBox.Canvas.StretchDraw(PaintBox.ClientRect, FMetaFile);
  DrawRaster;
  DrawFadenkreuz;
end;
Das Raster und das Fadenkreuz werden direkt auf die PaintBox gezeichnet. Ich hätte es nun aber gern so, daß zuerst das Raster gezeichnet wird und dann erst die Metafile. Geht das irgendwie ?

Valle 17. Jan 2014 18:23

AW: PaintBoxPaint Draw Reihenfolge.
 
Delphi-Quellcode:
procedure TDigensForm.PaintBoxPaint(Sender: TObject);
begin
  DrawRaster;
  PaintBox.Canvas.StretchDraw(PaintBox.ClientRect, FMetaFile);
  DrawFadenkreuz;
end;
? :gruebel:

Bjoerk 17. Jan 2014 18:48

AW: PaintBoxPaint Draw Reihenfolge.
 
Schön wär‘s :-D (das StrechDraw verdeckt doch das Raster).

Jens01 17. Jan 2014 19:54

AW: PaintBoxPaint Draw Reihenfolge.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich meine, das willst Du nicht hören:
TImgView32 -natürlich Gr32- ist quasi eine Paintbox mit Layern. Muß man sich zwar einarbeiten, aber da legt man das Raster einfach in ein Layer und gut is.

Bjoerk 17. Jan 2014 21:13

AW: PaintBoxPaint Draw Reihenfolge.
 
Hallo Kollege. Mag sein. Ich fang jetzt aber nicht mehr von vorne an. Hab ne Gui mit eigenem OI. Sieht super aus und ist auch sau schnell (vor allem, weil die ganze Grafik nicht in MouseMove "refreshed" werden muß sondern nur das, was gerade geändert wird. Das (bei einer MetaFile) hinzukriegen war die eigentliche Schwierigkeit). Das mit dem Raster ist eher auch ein Mini-Problem (ich kann es auch auf die Metafile zeichnen, nur da gehört‘s eigentlich nicht hin).

Schönes Wochenende!

sx2008 18. Jan 2014 01:11

AW: PaintBoxPaint Draw Reihenfolge.
 
Nur noch ein kleiner Tipp:
Übergib den Proceduren DrawRaster und DrawFadenkreuz einen Parameter vom Typ
Delphi-Quellcode:
TCanvas
.
Delphi-Quellcode:
procedure TDigensForm.DrawRaster(canvas:TCanvas);
begin
  ...
Das erhöht die Flexibilität deiner Software; vielleicht möchtest du die Ausgabe ja mal auf ein Bitmap oder den Drucker-Canvas schicken.

Bjoerk 18. Jan 2014 10:09

AW: PaintBoxPaint Draw Reihenfolge.
 
Ok. Welchen CopyMode müßte ich denn auswählen, wenn man das Raster auf eine Extrabitmap / ExtraMetafile zeichnen würde und das in die PaintBox reinkopiert (also so, daß die bereits vorhandene Grafik nicht überschrieben wird)? Das wär auch das, was ich eigentlich wollte, denn dann könnte man nämlich auf verschiedene Ebenen zeichnen. :gruebel:

sx2008 18. Jan 2014 12:31

AW: PaintBoxPaint Draw Reihenfolge.
 
Entweder cmSrcPaint oder auch cmSrcInvert (sourcebitmap XOR rasterlinien) wären geeignet.
Jenachdem wie du dein Raster zeichnest wäre auch noch cmMergePaint interessant.
Einfach mal ausprobieren.

Bjoerk 18. Jan 2014 18:29

AW: PaintBoxPaint Draw Reihenfolge.
 
So langsam steig ich da durch. Bei Metafiles macht das wohl mit PlayEnhMetaFile? Funktionieren tut's schonmal gut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.

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