2010-07-23 5 views
0

폼에 PictureBox가 있습니다. 다음과 같이 나는 그래픽을 만들 폼의 Load 이벤트에서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도 앵커 속성이 확장으로 설정됨에 따라) 커서에 대한 드로잉의 상대적 위치가 변경됩니다.

내가 빠진 것이 있습니까?

답변

1

이것은 pictureBox에 잘못된 sizeMode가 의심되는 것 같습니다. PictureBox 이미지의 크기를 PictureBox의 크기와 같게 만듭니다.

+0

PictureBox를 이미지와 동일한 크기로 만들면 작동합니다. 하지만 PB 내부의 이미지 크기를 유지하고 싶습니다. 가능합니까? – SharpAffair

+0

결국 AutoSize로 설정된 PictureBox SizeMode를 사용하여 컨테이너를 자동 스크롤과 함께 사용하기로 결정했습니다. 그것은 그 문제를 해결했습니다. – SharpAffair

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) 

것 같아요, 그것은 것입니다 미래에 누군가에 유용합니다.