Announcement

Collapse
No announcement yet.

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

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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:

    Code:
    //Form1.cs
    
                Bitmap bm = new Bitmap(500, 500);
                Graphics g = Graphics.FromImage(bm);
                Vektor v = new Vektor();
                byte[] ByteArray = v.DrawVector(g);
    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.



    Edit: Grad gesehen, habs im .NET-Bereich gepostet... Falls es geht -> verschieben.
    Zuletzt editiert von fff619; 08.03.2013, 21:47.

  • #2
    http://www.c-plusplus.de/forum/314627

    geschlossen
    Christian

    Comment

    Working...
    X