Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   TMetafile nachträglich vergrößern (https://www.delphipraxis.net/152286-tmetafile-nachtraeglich-vergroessern.html)

uligerhardt 17. Jun 2010 13:41

TMetafile nachträglich vergrößern
 
Hallo miteinander!

Ich möchte ein Metafile als Zwischenspeicher für eine Gruppe von Zeichenoperationen verwenden. Mein Ansatz:
Delphi-Quellcode:
procedure Test;
var
  m: TMetafile;
  mc: TMetafileCanvas;
begin
  m := TMetafile.Create;
  try
    m.SetSize(1000, 1000); {AAA}

    mc := TMetafileCanvas.Create(m, 0);
    try
      mc.Ellipse(10, 10, 990, 990);
      mc.Rectangle(500, 500, 1100, 1100);
    finally
      mc.Free;
    end;
    m.SaveToFile('Test.emf');
  finally
    m.Free;
  end;
end;
Dummerweise weiß ich aber erst während des Zeichnens, welche Elemente ich zeichnen will und welche Größe ich dafür brauche, kann also an der Stelle
Delphi-Quellcode:
{AAA}
noch nicht die endgültige Größe angeben. Dummerweise ist es nachher zu spät: Nach Anlegen des Canvas kann ich das SetSize hinsetzen, wo ich will - die Wirkung wird entweder durch
Delphi-Quellcode:
mc.Free
rückgängig gemacht oder ist zwar in
Delphi-Quellcode:
m.Width
/
Delphi-Quellcode:
m.Height
zu erkennen, kommt aber nicht im EMF auf der Platte an.

Habt ihr eine Idee für mich?

Keldorn 17. Jun 2010 17:01

AW: TMetafile nachträglich vergrößern
 
Hallo,

warum weißt Du erst beim Zeichnen was Du zeichnen willst?

du könntest auch analog Drawtext erstmal alles ins "nichts" zeichnen, damit du die benötigte Größe ermitteln kannst. Danach dann richtig.

Oder du fängst mit deinem Metafile so klein wie möglich an, bei jedem Zeichnen, das über die Größe hinausgehen würde, erstellst du ein neues Metafile mit der neuen Größe, zeichnest das alte hinein und anschließend deine neue Grafik.

Gruß Frank

rollstuhlfahrer 17. Jun 2010 17:03

AW: TMetafile nachträglich vergrößern
 
dann schreib halt alles in eine Liste, dass du weißt, wie viel du zeichnen wirst und schreibe erst dann auf die Festplatte.

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 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