2010-07-23 66 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) 

我想,它會有人在將來有用。

相關問題