2012-06-05 21 views
0

我正在尝试编写一个应用程序,以在不使用任何外部SDK的情况下将.net窗体上的shapefile可视化。我已成功编写代码以读取shapefile。现在我无法获得GDI +技巧来有效地将几何图形绘制到用户控件中。如何使用C#在用户控件上绘制shapefile的几何图形?

有什么想法?

+0

可以提供约shape文件格式的更多信息? –

+0

Shapefile主要由三个文件shp,shx和dbf组成。 几何信息存储在.shp文件中。 shapefile的规格可以从www.esri.com/library/whitepapers/pdfs/shapefile.pdf获得 –

+0

你知道它们可以转换为普通的图像格式吗? –

回答

0

您应该使用UserControl的图形对象(通常是Control)来绘制点,线等。如果您可以从shapefile获取点信息,这将很有用。使用以下链接使其工作。 Drawing with Brush on UserControlDrawing a Point on a Custom UserControl

这是一个例子:

Graphics g = this.CreateGraphics(); 
g.DrawPolygon(...) ; 
+0

我设法写下如下的代码。 private void AddLine(Line line) 图形g = panel1.CreateGraphics(); System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath(); Pen pen = new Pen(Brushes.Blue); pen.Width = 2; (line.Points [0] .AsPointF(),line.Points [1] .AsPointF()); g.DrawPath(pen,path); pen.Dispose(); } 现在的问题是,创建的图形不稳定。在运行期间,如果用户控件上方出现另一个窗口,图形将消失。可能是什么问题呢? –

+0

您应该将代码放入paint事件中。您应该重写OnPaint()方法并将行代码放入ti中。每当需要重新绘制窗口时,都会调用此方法。这就像OpenGL,DirectX中的paint()方法等。 –

+0

现在完成了... 感谢您的帮助。 –