2013-10-16 1 views
2

마우스 클릭시 점을 찍고 그려주는 Form 작업 중입니다. 제대로 점을 그릴 수 있도록 스크롤 오프셋을 올바르게 추가하고 추가하는 방법에 대해 혼란스러워합니다. 예를 들어, 왼쪽 위 좌표가 (0,0) 인 점을 추가하면 바로 원래 점에서 머물러 있지 않고 그 자체가 다시 그려지고 스크롤하는 동작으로 이동합니다. 나는 좌표를 저장할 때 스크롤 오프셋 얻기

this.AutoScroll = true 

를 설정하고 최소 크기를 수동으로

다음
this.AutoScrollMinsSize = new Size(800,600); 

내 마우스 클릭 이벤트가 지금까지 모습입니다 설정 :

사용하기에 적합한 방법은 무엇입니까
if (e.Button == MouseButtons.Left) 
{ 
    Point newPoint = new Point(e.X, e.Y); 
    p.X += this.AutoScrollOffset.X; 
    p.Y += this.AutoScrollOffset.Y; 
    this.Invalidate(); 
} 

을 AutoScrollOffset 속성을 사용하면 스크롤 할 때 움직이지 않고 포인트가 속한 지점을 유지할 수 있습니까?

내 프로그램은 또한 스크롤 이벤트가 발생할 때 다시 그리기 위해 스크롤 이벤트를 재정의하여 표시 영역이 남아 있으면 드로잉 문제를 해결할 수 있도록 추가해야합니다.

답변

2

AutoScrollOffset은 사용할 올바른 속성이 아닙니다. ScrollControlIntoView() 메서드를 사용할 때 스크롤 위치에 오프셋을 적용 할 수 있으므로 사용이 매우 제한적입니다. 꽤 희귀한데 결코 한번도 사용하지 못했습니다.

당신은 대신 AutoScrollPosition 속성을 사용해야합니다 빼기이 필요

if (e.Button == MouseButtons.Left) { 
     var newPoint = new Point(e.X - this.AutoScrollPosition.X, 
           e.Y - this.AutoScrollPosition.Y); 
     // etc.. 
    } 

하는 것으로, 조금 직관적이지.

관련 문제