Hallo,
ich möchte gerne ein Bitmap in eine Graphic umwandeln. Danach soll die Graphic in eine Vektorgrafik (.emf oder .wmf), welche sich in einem MemoryStream befindet, umgewandelt werden. Anschließend soll die Vektorgrafik als Byte-Array zurückgegeben werden.
Derzeitiger Quellcode:
Code
- //Vektor.cs
- public byte[] DrawVector(Graphics Canvas)
- {
- MemoryStream ms = new MemoryStream();
- //GetHdc = Window Handle zu einem Device Context (Gerätekontext, z.B. Drucker, Bildschirm etc.)
- using (Metafile mf = new Metafile(ms, Canvas.GetHdc())) //Haufenweise Exceptions, z.B. wird die Height oder Width nicht übernommen
- {
- using (Graphics gra = Graphics.FromImage(mf))
- {
- //Zeichne irgendwas
- gra.DrawLine(Pens.Black, new Point(1,5), new Point(10,10));
- gra.Save();
- //mf.Save funktioniert nicht!? "Ungültiger Parameter" oder "Ausnahmefehler GDI+" (abhängig vom ImageFormat)
- //mf.Save(ms, ImageFormat.Emf);
- }
- //MemoryStream wird automatisch nach dem Zeichnen gefüllt
- }
- //Schließen
- Canvas.ReleaseHdc();
- Canvas.Dispose();
- ms.Close();
- return ms.ToArray();
- //mf.Save als ImageFormat.Emf ist nicht möglich:
- //When you use the Save method to save a graphic image as a Windows Metafile Format (WMF) or Enhanced Metafile Format (EMF) file,
- //the resulting file is saved as a Portable Network Graphics (PNG) file instead. This behavior occurs
- //because the GDI+ component of the .NET Framework does not have an encoder that you can use to save files as .wmf or .emf files.
- }
Es ist wichtig, dass es eine Vektorgrafik sein soll! Ich kriege zwar einen Return Wert, jedoch ist der immer gleich (egal was ich übergebe). Stimmt das!?
Des Weiteren hat die Metafile etliche Exceptions. Verstehe nicht, warum die Metafile z.B. nicht die Höhe übernimmt.