【问题标题】:PictureBox Drawing Coordinates Relative to FormPictureBox 相对于窗体的绘图坐标
【发布时间】:2011-03-20 01:04:31
【问题描述】:

我在表单上有一个 PictureBox。

在表单的加载事件中,我创建如下图形:

imageGraphics = Graphics.FromImage(PictureBox1.Image)

然后,在 PictureBox_MouseMove 事件中,我绘制椭圆:

imageGraphics.FillEllipse(New SolidBrush(brushColor), e.X, e.Y, brushWidth, brushWidth)

无论我尝试什么,它总是使用不正确的坐标。我尝试了 e.Location.PointToClient()、PointToScreen() 和 Cursor.Position。一切都远非预期(我需要准确地绘制光标所在的位置)。

每当调整表单大小时(以及 PictureBox,因为它的 Anchor 属性设置为展开),绘图与光标的相对位置都会发生变化。

我有什么遗漏的吗?

【问题讨论】:

    标签: .net image gdi+ drawing picturebox


    【解决方案1】:

    这听起来很像您的图片框上的不正确 sizeMode。尝试使 PictureBox 图像的大小与 PictureBox 的大小相同。

    【讨论】:

    • 如果我使 PictureBox 与图像大小相同,它就可以工作。但是我想在 PB 中继续缩放图像,这可能吗?
    • 最终我决定使用具有自动滚动功能的容器,并将 PictureBox SizeMode 设置为 AutoSize。这解决了问题。
    【解决方案2】:

    虽然这是 1.5 年的历史,但获取相对于 PictureBox 的坐标的正确调用是:

       Dim p1 as point=PictureBox1.PointToClient(Windows.Forms.Cursor.Position)
       imageGraphics.FillEllipse(New SolidBrush(brushColor), p1.X, p1.Y, brushWidth, brushWidth)
    

    我猜,它对将来的某个人有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多