VB.Net使用gdi32函数绘制Drawing.Bitmap

时间:2014-12-18 10:30:10

标签: vb.net vb6 gdi

我正在研究GIS程序的迁移。原始代码是用VB6编写的,使用的是gdi32 lib。新代码是用VB.Net编写的。我已经重写了除特定于GIS的算法之外的所有代码。我不认为理解和迁移这些算法是一个好主意,因为它们自1988年以来一直在开发和测试。所以我决定使用PInvoke:

  Gdi32.Polygon(hdc, lpPoint, nCount)

在Gdi32课程中:

<DllImport("gdi32.dll")> _
    Friend Shared Function Polygon(ByVal hdc As Integer, ByRef lpPoint As Object, ByVal nCount As  Integer) As Integer
    End Function

为了得到hdc,我这样做了:

hdc = MyPictureBox.CreateGraphics().GetHdc

到目前为止一切顺利。但后来我才知道直接在PictureBox控件上绘图并不是一个好主意,因为它不是持久性的。现在我想在Bitmap中绘制我的多边形,然后将此位图设置为PictureBox的Image属性:

hdc = Graphics.FromImage(MyBitmap).GetHdc()
[...] 'Draw the polygons
MyPictureBox.Image = MyBitmap

但这似乎不起作用。 PictureBox上没有显示任何内容。有什么想法吗?

谢谢:)

2 个答案:

答案 0 :(得分:0)

在.net中,您可以将绘图调用放入绘制事件中,它将显示为持久性。

答案 1 :(得分:0)

感谢大家的回答,最后我与架构师讨论了这个问题,尽管存在潜在风险,我们决定翻译算法。所以我不会继续寻找正确的答案。无论如何,谢谢你们:))