2009-02-27 12 views
4

Ich versuche, den Inhalt eines Grafikobjekts auf ein anderes zu kopieren, aber das einzige, was ich finden konnte, basiert auf der Verwendung von GDI32.DLL, die ich lieber vermeiden würde, wenn möglich.So kopieren Sie ein Grafikobjekt in ein anderes

Weiß jemand wie/wenn das mit verwaltetem Code möglich ist? Es macht mir nichts aus, wenn die Antworten in C# oder VB.Net sind. Hier

ist, was ich derzeit haben:

Private Sub CopyGraphics() 
    Dim srcPic As Graphics = pnl.CreateGraphics 

    Dim srcBmp As New Bitmap(pnl.Width, pnl.Height, srcPic) 
    Dim srcMem As Graphics = Graphics.FromImage(srcBmp) 

    Dim HDC1 As IntPtr = srcPic.GetHdc 
    Dim HDC2 As IntPtr = srcMem.GetHdc 

    BitBlt(HDC2, 0, 0, pnl.Width, pnl.Height, HDC1, 0, 0, 13369376) 

    pnlDraw.BackgroundImage = srcBmp 

    'Clean Up code omitted... 
End Sub 

Antwort

5

Streng genommen ist es nicht möglich, den Inhalt einer Grafik zu kopieren Objekt überall und zu jeder Methode zu verwenden, da ein Graphics-Objekt nichts enthält.

Warum verwenden Sie nicht die DrawToBitmap-Methode, um das Steuerelement auf der Bitmap zu zeichnen?

Dim srcBmp As New Bitmap(pnl.Width, pnl.Height) 
Dim clip As New Rectangle(New Point(0, 0), pnl.Size) 
pnl.DrawToBitmap(srcBmp, clip) 
+0

Ich wusste nicht über die DrawToBitmap-Methode, danke. – Pondidum

Verwandte Themen