AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Problem mit Metafile
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Metafile

Ein Thema von igel457 · begonnen am 31. Mär 2006 · letzter Beitrag vom 31. Mär 2006
Antwort Antwort
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#1

Problem mit Metafile

  Alt 31. Mär 2006, 18:30
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:
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;
Danke!
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Metafile und Canvas

  Alt 31. Mär 2006, 19:02
Hallo,

Du musst ein neues Metafile erzeugen, und auf dessen Canvas Dein Original-Metafile malen. Ungefähr so:
Delphi-Quellcode:
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;
Gruß
xaromz
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Problem mit Metafile

  Alt 31. Mär 2006, 19:08
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ß.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Problem mit Metafile

  Alt 31. Mär 2006, 19:13
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
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Problem mit Metafile

  Alt 31. Mär 2006, 20:03
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
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 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