【发布时间】:2019-12-08 20:30:33
【问题描述】:
我有一个程序可以让您在图像上画线,最终将用于计算距离。
为了简单起见,我当前的图像(在 PictureBox 中)是一个标尺图像。当您左键单击时,会创建并绘制一条路径。
最初,为了放大,我有它,以便使用新尺寸的图像创建一个新的位图,我可以使用Graphics.ScaleTransform,它工作正常,但它只会裁剪图像。
我需要图像来实际改变宽度和高度,所以现在我所做的只是在放大/缩小时在宽度和高度上添加/减去一个恒定的缩放量。
使用这种方法,我似乎无法缩放图形,并且当图像放大时路径会倾斜到不同的方向,而不是正确的尺寸。 我完全理解为什么会发生这种情况,因为图像越来越大而图形保持不变,我只需要任何数学来缩放图形。
我尝试使用Graphics.ScaleTransform 以及将图形 x 和 y 移动到它们的当前位置 + 当前缩放量(偏移量)
【问题讨论】:
-
你知道picturebox可以自己缩放吗?然后,您可以在绘图时获取因子并使用 scaletransform 。请注意,您需要将 pbox 的大小调整为图像的纵横比或允许左侧或顶部间隙。 Examples
-
如 TaW 所述,使用 PictureBox 的
Zoom模式。无论画布大小如何,其他一些在缩放图像上绘制的方法:Translate Rectangle Position in Zoom Mode Picturebox -- How to crop a section of an Image at cursor position? -
关于尺子:如果您还没有自己滚动,请参阅此代码项目:Ruler Control。
-
@TaW 啊,看,如果我以前知道的话,那可能会很有帮助......会试一试。谢谢!
-
@TaW 这行得通!你能把它改成一个答案,以便我标记它吗?