Convert Bitmap to Graphic to Vektorgrafik (Metafile) -> Return ByteToArray

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Convert Bitmap to Graphic to Vektorgrafik (Metafile) -> Return ByteToArray

      Convert Bitmap to Graphic to Vektorgrafik (Metafile) -> Return ByteToArray
      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:

      Quellcode

      1. //Form1.cs
      2. Bitmap bm = new Bitmap(500, 500);
      3. Graphics g = Graphics.FromImage(bm);
      4. Vektor v = new Vektor();
      5. byte[] ByteArray = v.DrawVector(g);


      Quellcode

      1. //Vektor.cs
      2. public byte[] DrawVector(Graphics Canvas)
      3. {
      4. MemoryStream ms = new MemoryStream();
      5. //GetHdc = Window Handle zu einem Device Context (Gerätekontext, z.B. Drucker, Bildschirm etc.)
      6. using (Metafile mf = new Metafile(ms, Canvas.GetHdc())) //Haufenweise Exceptions, z.B. wird die Height oder Width nicht übernommen
      7. {
      8. using (Graphics gra = Graphics.FromImage(mf))
      9. {
      10. //Zeichne irgendwas
      11. gra.DrawLine(Pens.Black, new Point(1,5), new Point(10,10));
      12. gra.Save();
      13. //mf.Save funktioniert nicht!? "Ungültiger Parameter" oder "Ausnahmefehler GDI+" (abhängig vom ImageFormat)
      14. //mf.Save(ms, ImageFormat.Emf);
      15. }
      16. //MemoryStream wird automatisch nach dem Zeichnen gefüllt
      17. }
      18. //Schließen
      19. Canvas.ReleaseHdc();
      20. Canvas.Dispose();
      21. ms.Close();
      22. return ms.ToArray();
      23. //mf.Save als ImageFormat.Emf ist nicht möglich:
      24. //When you use the Save method to save a graphic image as a Windows Metafile Format (WMF) or Enhanced Metafile Format (EMF) file,
      25. //the resulting file is saved as a Portable Network Graphics (PNG) file instead. This behavior occurs
      26. //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.
      27. }
      Alles anzeigen


      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.