C#在可调整大小的图片中绘制点

问题描述

| 我正在编写用于查看地图的简单C#应用程序。地图是大小约为1000x1000或类似大小的JPG图像,可以按比例调整大小。我有一组点坐标(x,y)和名称。 Viewer是一个Windows Form应用程序,其中包含控制面板和PictureBox。 PictureBox具有属性
SizeBox=AutoSize
。 我使用这种方法将点放置到地图上(PictureBox)。
Graphics g = Graphics.FromHwnd(pictureBox.Handle);
SolidBrush redBrush = new SolidBrush(Color.Red);
g.FillEllipse(redBrush,x,y,7,7);
滚动或调整表格大小后,所有点均消失。如果我在Paint事件上画点,那么我的表现就会有很大的问题。 如何解决这个问题呢?     

解决方法

        为了获得更好的性能,请尝试仅绘制当前可见的内容。最佳实践是放下PictureBox并仅使用两个滚动条(或其他可以像PictureBox一样滚动的滚动条),并仅绘制可见部分的地图和点。在此之前,尝试在调整大小或滚动时将其绘制到PictureBox中,并检查夹点是否在可见区域内。 补充:如果将元素绘制到jpg副本中并将其放入PictureBox,也许就足够了?     ,        您应该能够将事件处理程序挂钩到PictureBox的各个更改点(您提到了滚动和调整大小)。然后,您可以将绘图代码放入从这些事件处理程序调用的方法中。     ,        WPF可能是一个更好的选择。它具有硬件加速功能,将为您执行所有剪辑和缩放转换(只需设置适当的属性)。而且,您还应该能够使用WPF元素来跟踪POI,而不必自己绘制它们。