c# - 如何将一个图形对象复制到另一个

标签 c# .net vb.net graphics gdi+

我正在尝试将一个图形对象的内容复制到另一个图形对象,但我唯一能找到的是基于使用 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

最佳答案

严格来说,不可能使用任何方法将 Graphics 对象的内容复制到任何地方,因为 Graphics 对象不包含任何内容。

为什么不用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)

关于c# - 如何将一个图形对象复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597037/

相关文章:

c# - VS 2013 SDK : Indentation issues with selected text

vb.net - 如何检查当前系统日期格式?

c# LINQ 返回所有连接的结果

c# - 计算 iTextSharp PDF 文档的高度?

c# - 取消 token : why not to use AsyncLocal context instead of passing parameter to every async method?

.net - 观察 ip 地址状态的变化

javascript - 如何在 vb.net 网络浏览器中按下按钮

.net - 拦截/覆盖自定义控件上的 Name 属性?

c# - 替换c#中字符串的最后一个字符

c# - 在数据库中只存储日期而不是时间部分 C#