![]() |
Problem mit Metafile
Ich habe Momentan (wie immer) ein kleines Problem...
Ich habe noch nie mit MetaFiles in Delphi gearbeitet. Wie kann ich etwas auf ein MetafileCanvas Zeichnen, ohne den Inhalt der Aktuellen Metafile zu überschreiben? Da ich bei jedem Mausklick einen Kreis Zeichnen möchte, der dann auch sichtbar wird, muss ich den MetafileCanvas immer wieder frei geben.
Delphi-Quellcode:
Danke!
procedure OnMouseDown;
begin mc := TMetafileCanvas.Create(mf,0); //Hier müsste ich jetzt irgendwie den Aktuellen Inhalt "Assignen". with mc do begin Brush.Color := c; Pen.Color := c; Ellipse(round((lx-w div 2)),round((ly-w div 2)),round((lx+w div 2)),round((ly+w div 2))); end; mc.free; end; procedure Create; begin mf := TMetafile.Create; mf.Width := 630; mf.Height := 315; end; |
Re: Metafile und Canvas
Hallo,
Du musst ein neues Metafile erzeugen, und auf dessen Canvas Dein Original-Metafile malen. Ungefähr so:
Delphi-Quellcode:
Gruß
procedure MalAufMetaFile(var AMF: TMetaFile); // <- hier ist var wichtig
var MF: TMetaFile; begin MF := TMetaFile.Create; MF.Width := AMF.Width; MF.Height := AMF.Height; with TMetafileCanvas.Create(MF, 0) do begin Draw(0, 0, AMF); // Original zeichnen // hier die weiteren Graphikoperationen Brush.Color := c; Pen.Color := c; Ellipse(round((lx-w div 2)),round((ly-w div 2)),round((lx+w div 2)),round((ly+w div 2))); // end; AMF.Free; // Original zerstören AMF := MF; // Neues Metafile zurückliefern end; xaromz |
Re: Problem mit Metafile
Im Großen und Ganzen funktioniert es, allerdings beginnt es ungefähr nach dem 9. Mal furchtbar zu ruckeln und wird äußerst langsam.
Hoffe, das es da auch noch eine Lösung gibt. Die Metafile ist ungefähr 630*315 PX groß. |
Re: Problem mit Metafile
Hallo,
das Problem ist, dass beim Zeichnen eines Metafiles ja immer die einzelnen Zeichenschritte durchgeführt werden. Mit jedem Durchlauf werden es also immer mehr Zeichenschritte, die nötig sind. Wie sich dieses Problem hier konkret lösen lässt, kann ich Dir nicht sagen. Vielleicht solltest Du über Deine Herangehensweise nachdenken und einen anderen Ansatz wählen. Gruß xaromz |
Re: Problem mit Metafile
Ja, ich Bastel mir ein eigenes Dateiformat für meine Karten. Die bestehen ja eigentlich nur aus Kreisen. Also bau ich mir jetzt einfach eine Liste...
Danke trotzdem! igel457 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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