WEB开发网
开发学院软件开发C语言 [叩响C#之门]写给初学者:滚动条原理 阅读

[叩响C#之门]写给初学者:滚动条原理

 2010-09-30 20:56:08 来源:WEB开发网   
核心提示: 实际上椭圆下半部分纵坐标范围为200~250,所以要想正确绘制出空白区域的图形,[叩响C#之门]写给初学者:滚动条原理(4),需要把绘图的坐标原点向上平移50像素,而这一点可以通过坐标的平移变换实现, 试一试:根据滚动条的位置调整坐标系publicpartialclassForm1:Form{

实际上椭圆下半部分纵坐标范围为200~250,所以要想正确绘制出空白区域的图形,需要把绘图的坐标原点向上平移50像素,而这一点可以通过坐标的平移变换实现,如图17-25所示。

[叩响C#之门]写给初学者:滚动条原理 

图17-26 坐标平移

坐标平移的情况如图17-26所示,要绘制从A点开始的区域,就要把坐标系原点由工作区的左上角A平移到文档的左上角O,即始终使坐标系的原点位于文档的左上角。这种变换可以通过下面的语句实现。

g.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y);

属性AutoScrollPosition表示的是滚动条的位置,滚动条移动了多少像素,坐标系就要平移多少像素。需要注意的是,AutoScrollPosition.X和AutoScrollPosition.Y均为负数,所以坐标原点实际上是向左上角平移的。

[叩响C#之门]写给初学者:滚动条原理 试一试:根据滚动条的位置调整坐标系

public partial class Form1 : Form 
{ 
  //构造函数 
  public Form1() 
  { 
    InitializeComponent(); 
 
    //将窗体的背景色设置为白色 
    this.BackColor = Color.White; 
    //当工作区小于300×250像素时显示滚动条 
    this.AutoScrollMinSize = new Size(300, 250); 
  } 
 
  //重写OnPaint()方法 
  protected override void OnPaint(PaintEventArgs e) 
  { 
    base.OnPaint(e); 
    Graphics g = e.Graphics; 
 
    //平移坐标系 
    g.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y); 
 
    //绘制矩形和椭圆 
    g.FillRectangle(Brushes.LightPink, 0, 0, 200, 150); 
    g.FillEllipse(Brushes.LightGreen, 0, 150, 300, 100); 
  } 
}

运行程序,结果如图17-27所示,一切正常。

[叩响C#之门]写给初学者:滚动条原理

图17-27 根据滚动条的位置调整坐标系的运行结果

上一页  1 2 3 4 

Tags:叩响 写给 初学者

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接