AW: SynPdf - ungültige Gleitkommaoperation
Ok. Danke für deine Hinweise :thumb:
Bei SynPdf ist zur Zeit wohl nicht viel los, das Forum scheint auch "readonly" zu sein. Meine Wenigkeit hat sich deshalb auch mal überlegt, wie man das machen könnte. Ich würde in SynDpf nichts machen sondern einen Parser vorschalten und dann deren Dest nach SynPdf übergeben!?
Delphi-Quellcode:
TXFormMetafileToMetafile = class
private FDevice: HDC; FSource, FDest: TMetafile; procedure ProcessMetafile; public property Dest: TMetafile read FDest; procedure LoadSourceFromFile(const FileName: string); procedure SaveDestToFile(const FileName: string); constructor Create(const Device: HDC); destructor Destroy; override; end; .. function MFProc(DC: HDC; P: Pointer; MF: TXFormMetafileToMetafile): Integer; stdcall; begin Result := 1; case PEMR(P).iType of // -> TXFormMetafileToMetafile Methoden; end; end; constructor TXFormMetafileToMetafile.Create(const Device: HDC); begin FDevice := Device; FSource := TMetafile.Create; FDest := TMetafile.Create; end; destructor TXFormMetafileToMetafile.Destroy; begin FSource.Free; FDest.Free; inherited; end; procedure TXFormMetafileToMetafile.LoadSourceFromFile(const Filename: string); var Stream: TStream; begin Stream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite); try FSource.LoadFromStream(Stream); finally Stream.Free; end; end; procedure TXFormMetafileToMetafile.SaveDestToFile(const FileName: string); var Stream: TStream; begin ProcessMetafile; Stream := TFileStream.Create(Filename, fmCreate); try FDest.SaveToStream(Stream); finally Stream.Free; end; end; procedure TXFormMetafileToMetafile.ProcessMetafile; begin FDest.Clear; Windows.EnumEnhMetaFile(FDevice, FSource.Handle, @MFProc, Self, Rect(0, 0, 0, 0)); end; |
AW: SynPdf - ungültige Gleitkommaoperation
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich habe jetzt eine Lösung gefunden die für mich funktioniert mit beliebigen Rotationswinkeln. Habe aber die SynPdf etwas erweitern müssen. Wenn Du willst schicke ich es Dir. Denke nicht das mein "Hack" in die offiziellen Repos geht. Habe Arnold angeschrieben mal abwarten. |
AW: SynPdf - ungültige Gleitkommaoperation
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, ich würde es gerne mal testen. Meine Mail Adresse findest du in der angehängten Unit. Ich hab nur mal probiert die Metafile iTypes auszulesen. Ich werde das sicherlich nicht weiterverfolgen, du hast völlig recht, das wird ein mittleres 2D CAD Programm. Würde mich aber dennoch mal interessieren wieso es nicht gegangen ist? Nur wenn du Zeit und Lust hast..
LG Thomas |
AW: SynPdf - ungültige Gleitkommaoperation
Hallo,
auf die Schnelle: Deine Callback Routine ist falsch deklariert. MSDN:
Delphi-Quellcode:
Also muss die so aussehen:
int CALLBACK EnhMetaFileProc(
_In_ HDC hDC, _In_ HANDLETABLE *lpHTable, // fehlt bei Dir _In_ const ENHMETARECORD *lpEMFR, _In_ int nObj, // fehlt bei Dir _In_ LPARAM lpData );
Delphi-Quellcode:
function MFProc(DC: HDC; PT : Pointer; P: Pointer; NumObjects: integer; MF: TXFormMetafileToMetafile): Integer; stdcall;
Damit funktioniert Dein Testprogramm. Ich werde Dir meine angepasste SynPDF schicken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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