2010-07-23 78 views
0

我在窗体上有一个PictureBox。PictureBox绘图坐标相对于表格

在我创建图形如下形式的Load事件:

imageGraphics = Graphics.FromImage(PictureBox1.Image) 

然后,在PictureBox_MouseMove事件我画椭圆:

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

无论我怎么努力,总是得出不正确的坐标。我试过e.Location.PointToClient(),PointToScreen()和Cursor.Position。远非预期(我需要精确绘制光标所在的位置)。

每当窗体大小(与图片框也一样,因为它的Anchor属性设置为扩展),绘图光标变化的相对位置。

有什么我失踪?

回答

1

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

+0

如果我使PictureBox与图像大小相同,它就可以工作。但我想保持图像内部的缩放比例,这可能吗? – SharpAffair 2010-07-23 11:26:49

+0

最终我决定使用自动滚动的容器,将PictureBox的SizeMode设置为AutoSize。这解决了问题。 – SharpAffair 2010-07-23 17:38:07

1

虽然这为1.5岁,正确的调用来获取相对于PictureBox的坐标是:

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

我想,它会有人在将来有用。