在进行绘图时必须考虑这两种坐标。
世界坐标是整个区域的坐标,而页面坐标是可视区的坐标。这两种坐标是通过滚动条来体现出来的。
页面坐标的原点始终是窗口可视区的坐上角,世界坐标的原点始终不变,这两种坐标和VC中的屏幕坐标和客户坐标很相似。
世界坐标和页面坐标可以相互转换。在绘图时,可以将绘图DC的坐标原点移动:
Graphics dc = this.CreateGraphics();
int scrollPositionX = this.AutoScrollPosition.X;
int scrollPositionY = this.AutoScrollPosition.Y;
dc.TranslateTransform(scrollPositionX, scrollPositionY);
这样在这个dc中作图,它的坐标就是世界坐标,这个坐标随滚动条的移动而移动。在这个DC中作图,我们需要把页面坐标转换为世界坐标,才能正确的显示,具体做法为:
页面坐标(x , y)转化为世界坐标:
newX = x – scrollPositionX;
newY = y – scrollPositionY;
注意滚动条的值为负数,所以这里要用减法。
进行上面的转化后,进行绘制的图像就不会在滚动条滚动时出错了。