Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bitmap in TMetafile ausgeben Windows 7 (https://www.delphipraxis.net/167804-bitmap-tmetafile-ausgeben-windows-7-a.html)

rweinzierl 22. Apr 2012 08:36

AW: Bitmap in TMetafile ausgeben Windows 7
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke , wirklich danke.

Tatsächlich arbeitet dieser Code einwandfrei ==> Jetzt habe ich auch die Ursache gefunden, glauben kann ichs aber immer noch nicht ==> Meiner Meinung nach ein Bug .

Wenn ich ein Bitmap lade mit 24 Bit Farbtiefe gehts , bei 256 Farben nicht !!

mfg

Reinhold



Zitat:

Zitat von Bummi (Beitrag 1162979)
folgender Code liefert bei mir unter WIN7 D2010 das erwartete Ergebnis
Delphi-Quellcode:
var MyMetafile : TMetafile;
Bitmap : TBitmap;
myc : TMetafileCanvas ;

begin
MyMetafile := TMetafile.Create;
MyMetafile.Width := 200;
MyMetafile.Height := 200;

Bitmap := TBitmap.create;
Bitmap.width := 100;
Bitmap.Height := 100;
Bitmap.Canvas.pen.Color := clRed;
Bitmap.Canvas.pen.Width := 2;
Bitmap.Canvas.Ellipse(0,0,99,99);
myc := TMetafileCanvas.Create(MyMetafile, 0);

myc.pen.Color := clBlue;
myc.Ellipse(0,0,199,199);
myc.Draw(0, 0, Bitmap);
myc.Free;

MyMetafile.SaveToFile('c:\temp\mist.wmf');
self.Canvas.Draw(0,0,MyMetafile);
Bitmap.free;
MyMetafile.free;
end;


Bummi 22. Apr 2012 08:55

AW: Bitmap in TMetafile ausgeben Windows 7
 
kannst Du per Bitmap.PixelFormat := pf24Bit;
nachträglich "korrigieren", allerdings habe ich bis incl. pf4Bit kein Problem pf1Bit funktioniert nicht mehr, pf16Bit bringt Farbfehler

DeddyH 22. Apr 2012 09:20

AW: Bitmap in TMetafile ausgeben Windows 7
 
Könntet Ihr bitte noch Ressourcenschutzblöcke einbauen? Nicht, dass das später jemand so übernimmt und sich Speicherlecks einfängt.

[edit]
Delphi-Quellcode:
  MyMetafile := TMetafile.Create;
  Bitmap := TBitmap.Create;
  try
    ...
  finally
    Bitmap.Free;
    MyMetafile.Free;
  end;
ist aber auch nicht ganz korrekt.
Delphi-Quellcode:
MyMetafile := TMetafile.Create;
try
  Bitmap := TBitmap.Create;
  try
    ...
  finally
    Bitmap.Free;
  end;
finally
  MyMetafile.Free;
end;
Oder man initialisiert die "innere" Instanz mit nil, dann kann es auch im finally nicht knallen.[/edit]


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

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