【发布时间】:2021-04-22 17:45:37
【问题描述】:
在开始一个项目之前,我想事先知道以下是否可行。
应用程序创建一个System.Drawing.Bitmap 并在其上绘画。
Bitmap 比 PictureBox 大得多。 Bitmap 和 PictureBox 的高度是一样的。现在我希望能够通过按下鼠标左键并在 PictureBox 内(沿)移动它来将图像从左向右移动。
看图:
【问题讨论】:
-
一个 PBox.Image 是固定的。一个常见且简单的解决方案将 PBox 嵌套在 Panel 中,并将整个 PBox 移动到 Panel 中。
-
Zoom and translate an Image from the mouse location:跟随动画到结束,然后检查代码。顺便说一句,您在那里缺少一些抗锯齿功能。
-
非常感谢你们两位。 @Jimi 从“PictureBox”继承并开发自己的东西的好主意。效果很好! ??????
-
这只是为了简化鼠标交互。该代码背后的idea 是仅处理位图descriptor,即定义位图边界的 RectangleF,仅考虑最后一刻应用的效果的总和。这样,您只需要处理图像的 shape,而不是其内容。 -- 动画中的图像几乎是 4K 大小:使用这种方法,您可以处理它,因为它是一个小得多的对象,所以它变得非常快,即使您应用了很多效果/变换。
-
我现在已经从代码中读出了这一点。我注释掉了我不需要的东西(例如缩放);我用
new PointF(imageLocation.X + (e.Location.X - mouseLocation.X), imageLocation.Y+ (e.Location.Y - mouseLocation.Y));制作了new PointF(imageLocation.X + (e.Location.X - mouseLocation.X), imageLocation.Y);,因为我不想在高度上移动。 ??????
标签: c# winforms picturebox mousemove