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

本文关键字:绘制 可调整 | 更新日期: 2023-09-27 17:57:54

我正在编写用于查看地图的简单C#应用程序。地图是大小约为1000x1000或类似的JPG图像,可以按比例调整大小。我有一组点坐标(x,y)和名称。Viewer是一个包含控制面板和PictureBox的Windows窗体应用程序。PictureBox具有属性SizeBox=AutoSize。我使用这种方法在地图上放置点(PictureBox)。

Graphics g = Graphics.FromHwnd(pictureBox.Handle);
SolidBrush redBrush = new SolidBrush(Color.Red);
g.FillEllipse(redBrush, x, y, 7, 7);

滚动或调整窗体大小后,所有点都将消失。如果我在"绘画"活动中得分,我的表现会有很大的问题。如何解决这个问题?

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

为了获得更好的性能,请尝试只绘制当前可见的内容。最佳做法是放下PictureBox,只使用两个滚动条(或其他可以像PictureBox一样滚动的东西),只为可见的小部分绘制地图和点。在执行此操作之前,无论何时调整PictureBox的大小或滚动,都要尝试将点绘制到PictureBox中,并检查哪些点在可见区域内。

补充道:如果你把你的元素画成jpg的副本并放进PictureBox,也许就足够了?

您应该能够将事件处理程序挂接到PictureBox的各个更改点(您提到了滚动和调整大小)。然后,您可以将绘图代码放入从这些事件处理程序调用的方法中。

WPF可能是更好的选择。它是硬件加速的,将为您执行所有剪切和缩放转换(您只需设置适当的属性)。您应该能够使用WPF元素来跟踪POI,而不必自己绘制它们。