Bitmap aus Graphics Objekt erzeugen (HDC)

Terminator2

Erfahrenes Mitglied
Hallo zusammen,

Ich habe aus einem SDK folgende Funktion:
Code:
    Private Sub Draw()
        Dim hDCHelp As Integer
        Dim hDC As IntPtr
        Dim DC As Graphics
        Dim DrawPen As New Pen(Color.White, 3)

        Try
            hDCHelp = m_GDIOverlay.GetDC()
            hDC = New IntPtr(hDCHelp)
            DC = Graphics.FromHdc(hDC)

            DC.DrawLine(DrawPen, m_StartPoint, m_EndPoint)

            Dim Test As Bitmap = New Bitmap(640, 480)
            Test = Bitmap.FromHbitmap(hDC)
            'Test.Save("C:\Test.bmp")

            m_GDIOverlay.ReleaseDC(hDCHelp)
        Catch ex As Exception
            MsgBox("Fehler: " & ex.Message)
        End Try

Ich habe leider keine andere Möglichkeit auf das Bild zuzugreifen, als dies über das Graphics Objekt zu tun. Um nun was mit dem Bild anfangen zu können, will ich dieses wieder in ein Bitmap umwandeln. Testweise speichere ich das Bild auf der Festplatte, um ein Ergebnis zu sehen.
Das Problem ist jetzt, dass die Fehlermeldung "Allgemeiner Fehler in der GDI+" ausgegeben wird.
Weiß jemand, wie ich aus dem HDC ein Bitmap erzeugen kann?


Danke im vorraus!

Gruß David
 

Shakie

Erfahrenes Mitglied
Code:
Dim bmp As New Bitmap(640, 480, DC)
Edit: ah sorry ich hatte die vorletzte Zeile uberlesen. Probier mal die Basis-Fehlermeldung mit GetBaseException auszulesen, damit wir schlauer werden, was der eigentliche Fehler ist:
Code:
Try
    Dim Test As Bitmap = New Bitmap(640, 480)
    Test = Bitmap.FromHbitmap(hDC)
    Test.Save("C:\Test.bmp")
Catch ex As Exception
    MessageBox.Show(ex.GetBaseException.ToString)
End Try
 
Zuletzt bearbeitet:

Terminator2

Erfahrenes Mitglied
Habe zuerst einmal in das das DC in die New Bitmap Funktion eingefügt. Dann tritt schon kein Fehler mehr auf. Leider ist das gespeicherte Bild einfach nur ein leeres Bitmap, also recht nutzlos. Vielleicht lässt sich da ja noch was dran ändern ;)
Wenn ich die Fehlermeldung wie geschrieben auslese, kommt folgendes heraus (Also bei der von mir geposteten Draw-Funktion):

Zeile 810 hat übrigens den Befehl hier: Test = Bitmap.FromHbitmap(hDC)
 

Anhänge

  • Fehlermeldung.JPG
    Fehlermeldung.JPG
    16,7 KB · Aufrufe: 91