我正在研究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上没有显示任何内容。有什么想法吗?
谢谢:)
答案 0 :(得分:0)
在.net中,您可以将绘图调用放入绘制事件中,它将显示为持久性。
答案 1 :(得分:0)
感谢大家的回答,最后我与架构师讨论了这个问题,尽管存在潜在风险,我们决定翻译算法。所以我不会继续寻找正确的答案。无论如何,谢谢你们:))