Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   WMF in FMX benutzen (https://www.delphipraxis.net/203931-wmf-fmx-benutzen.html)

Rainer Wolff 8. Apr 2020 10:23

WMF in FMX benutzen
 
Hallo,

bisher habe ich unter VCL WMF-Grafiken benutzt, um masstabsgerechte Bilder zu zeichnen. (DXF in WMF konvertiert).

Nun würde ich das selbe gerne unter Firemonkey versuchen. In der Hilfe finde ich nun was über einen TBitmapCodecManager, der anscheinend unter Windows auch WMF-Formate kennen soll, aber wie ich das ganze benutzen soll, ist mir schleierhaft, und bisher habe ich keine Beispiele gefunden.

Wer kann mir da vielleicht auf die Sprünge helfen.

Was ich zusammengebastelt habe, funktioniert zwar mit png, aber nicht mit wmf (wirft keinen Fehler, zeigt aber auch nix an).
Code:
rocedure TForm11.FormCreate(Sender: TObject);
var
  surf: TBitmapsurface;
begin
  surf:=TBitmapSurface.Create;
  TBitmapCodecManager.LoadFromFile('E:\Media\logo.wmf',surf) ;
//  TBitmapCodecManager.LoadFromFile('E:\Media\logo.png',surf) ;

Image1.Bitmap.assign(surf);
end;

Rollo62 8. Apr 2020 10:43

AW: WMF in FMX benutzen
 
Hast Du es schonmal über ein TMultiResBitmap probiert ?
https://www.delphipraxis.net/181543-...renzfarbe.html

NicoDE 8. Apr 2020 11:09

AW: WMF in FMX benutzen
 
Wäre es nicht ratsam, direkt von WMF/EMF(+) auf SVG zu wechseln?
Siehe: https://en.delphipraxis.net/topic/19...-applications/

Rainer Wolff 8. Apr 2020 11:15

AW: WMF in FMX benutzen
 
Ich habe auch davon jetzt verschiedene Varianten durchprobiert, png sind ok, wmf nicht.

Code:
procedure TForm11.FormCreate(Sender: TObject);
var
  surf: TBitmapsurface;
  bmp: TBitmap;
  mr: TFixedMultiResBitmap;
begin
  surf := TBitmapsurface.Create;
  TBitmapCodecManager.LoadFromFile('E:\Media\knebelschalter_links.wmf', surf);
  // TBitmapCodecManager.LoadFromFile('E:\Media\logo.png',surf) ;

  Image1.Bitmap.assign(surf);

  if Image1.Multiresbitmap.Items[Image1.Multiresbitmap.Count - 1].Bitmap.isempty = false then
    Image1.Multiresbitmap.Add;

  // Image1.MultiResBitmap.Items[Image1.MultiResBitmap.Count-1].Bitmap.loadfromfile ('E:\Media\motor_gruen.wmf');
  // Image1.MultiResBitmap.Items[Image1.MultiResBitmap.Count-1].Bitmap.assign (surf);
  mr := TFixedMultiResBitmap.Create(self);
  bmp := mr[0].CreateBitmap('E:\Media\logo.png');
  mr[0].Bitmap.assign(bmp);
  bmp := Image1.Multiresbitmap[0].CreateBitmap('E:\Media\knebelschalter_links.wmf');
  Image1.Multiresbitmap[0].Bitmap.assign(bmp);

end;

Redeemer 9. Apr 2020 09:18

AW: WMF in FMX benutzen
 
WMF und EMF enthalten einfach eine Liste von GDI-API-Calls auf einen Gerätekontext (in Delphi als TCanvas, TPrinter und TMetafileCanvas bezeichnet). Ohne Windows-API kein GDI und ohne GDI kein WMF und EMF.

Rainer Wolff 9. Apr 2020 10:55

AW: WMF in FMX benutzen
 
SVG als mögliche Alternative habe ich auch schon ins Visier genommen, mit dem, was Delphi schon drin hat, gehts aber wohl nocht nicht, glaube ich.

Ich habe hier einen neuen Thread aufgemacht, in dem ich beschreibe, was ich eigentlich im Endeffekt machen will.


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