2009-02-27 3 views
4

Я пытаюсь скопировать содержимое одного графического объекта в другой, но единственное, что я смог найти, основан на использовании GDI32.DLL, что я бы предпочел избежать использования, если это возможно.Как скопировать один графический объект в другой

Кто-нибудь знает, как это возможно, используя управляемый код? Я не возражаю, если ответы на C# или VB.Net.

Вот что я в настоящее время:

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 

ответ

5

Строго говоря, это не возможно скопировать содержимое графического объекта в любом месте с помощью любого метода, так как объект Графика не содержит ничего.

Почему не использовать метод DrawToBitmap для рисования элемента управления на растровом изображении?

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

Я не знал о методе DrawToBitmap, спасибо. – Pondidum

Смежные вопросы