ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
1505
1505
EMPFEHLEN
-
Hallo zusammen,
ich stehe vor dem Problem, dass ich (enhanced) Windows Metafiles laden oder erzeugen und darin Commentare lesen oder schreiben muss.
Laut MSDN werden WMF Daten jedoch als PNG Daten verwaltet, da .Net angeblich keinen WMF Encoder besitzt.
Kann mir jemand sagen, wie ich diese Files laden, erzeugen, kommentieren und auslesen kann ?
Hier mal ein Versuch zum Erzeugen von EMF Daten mit Kommentar.
Aus irgendeinem Grund kann ich die EMF/WMF Daten nicht lesen, sondern nur schreiben.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
Graphics aGraphics = this.CreateGraphics(); // Create temporary Graphics object for metafile IntPtr aHandle = aGraphics.GetHdc(); // Creation and get handle to its device context. Metafile aMetaFile = new Metafile(@"test_2.emf", aHandle); // Create metafile object to record. Graphics aMetaGraphics = Graphics.FromImage(aMetaFile); // Create graphics object to RECORD metaFile. aMetaGraphics.DrawRectangle(new Pen(Color.Black, 5), 0, 0, 100, 100); // Draw rectangle in metaFile. byte[] aCommentBytes = { (byte)'T', (byte)'e', (byte)'s', (byte)'t' }; // Create comment and add to metaFile. aMetaGraphics.AddMetafileComment(aCommentBytes); aMetaGraphics.Dispose(); // Dispose of graphics object. aMetaFile.Dispose(); // Dispose of metafile. aGraphics.ReleaseHdc(aHandle); // Release handle to temporary device context. aGraphics.Dispose(); // Dispose of scratch graphics object.
Vielleicht hat jemand eine Idee, wie man darauf zugreifen kann.
Ich wäre für jede Hilfe dankbar.
MFG JJBPS: Ja, ich habe gegoogelt und nein, ich will kein Viagra kaufen
PPS: Tod allen verketteten Suchmaschinen
-
Hallo zusammen,
den ersten Schritt hätte ich. Ein Metafile zu lesen ist kein Hexenwerk und schnell programmiert. Microsoft bietet dafür ein recht gutes Snippet:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
private Metafile metafile1; private Graphics.EnumerateMetafileProc metafileDelegate; // Der Aufrufe erfolgt über eine Enumeration, welche die RecordSets des Metafiles // einzeln abarbeitet und sie in einen Delegate zurückführt. protected override void OnPaint(PaintEventArgs e) { e.Graphics.EnumerateMetafile(metafile1, new Point(20, 10), metafileDelegate); } // Der Delegate verweist auf ein Callback Objekt vom Typ EnumerateMetafileProc public Init() { metafile1 = new Metafile(@"C:\Test.wmf"); metafileDelegate = new Graphics.EnumerateMetafileProc(MetafileCallback); } // Das einzelne Record kann nun hier unterschieden werden und einer PlayRoutine // übergeben werden. So kann das Metafile Schrittweise "gemalt" werden. private bool MetafileCallback(EmfPlusRecordType recordType, int flags, int dataSize, IntPtr data, PlayRecordCallback callbackData) { byte[] dataArray = null; if (data != IntPtr.Zero) { dataArray = new byte[dataSize]; Marshal.Copy(data, dataArray, 0, dataSize); } metafile1.PlayRecord(recordType, flags, dataSize, dataArray); return true; }
Ich habe derzeit noch das Problem, dass ich die Records nicht einfach in ein anderes Metafile überführen kann, als würde ich eine flache Kopie erzeugen.
Sprich, ich kann mit diesen Records nicht wirklich was anfangen. Denn ich kann sie nicht in schreiben.
Hat jemand eine Idee, wie man Records aus einem Metafile extrahieren und in ein anderes einfügen kann ?
Besten Dank, JJBPS: Ja, ich habe gegoogelt und nein, ich will kein Viagra kaufen
PPS: Tod allen verketteten Suchmaschinen
Ähnliche Themen
-
Bilder dynamisch laden und in MovieClip laden
Von Nambot im Forum Flash PlattformAntworten: 2Letzter Beitrag: 28.02.08, 19:38 -
Form aus Assembly - Form laden, schließen, wieder laden -> Fehler
Von M4st3r im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 05.07.06, 14:09 -
Inhalt laden, ohne Design neu zu laden..?!
Von RuffY2k im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 30.04.05, 11:13 -
externe flash datei laden in ein content laden!
Von F-unit im Forum Flash PlattformAntworten: 17Letzter Beitrag: 14.12.04, 15:11 -
Ext TXT von FP laden
Von xamunrax im Forum Flash PlattformAntworten: 14Letzter Beitrag: 27.01.02, 14:29





Zitieren
Login




