[叩响C#之门]写给初学者:滚动条原理
2010-09-30 20:56:08 来源:WEB开发网核心提示: 试一试:在滚动窗口中绘图 publicpartialclassForm1:Form{//构造函数publicForm1(){InitializeComponent();//将窗体的背景色设置为白色this.BackColor=Color.White;//当工作区小于300×250像
试一试:在滚动窗口中绘图
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.FillRectangle(Brushes.LightPink, 0, 0, 200, 150);
g.FillEllipse(Brushes.LightGreen, 0, 150, 300, 100);
}
}
运行程序,结果如图17-22所示,出现了滚动条。
但当我们拖动滚动条时,意想不到的事情发生了。窗体并没有绘制椭圆的下半部分,而是又把椭圆的上半部分绘制了一遍(如图17-23所示)。
图17-22 出现滚动条 图17-23拖动滚动条时又把椭圆的上半部分绘制了一遍
为什么会出现这种情况呢?请把窗口最小化,然后恢复,我们发现窗口中的图像变为初始模样了(如图17-24所示)。
[]
- ››初学者对于三层框架的理解
- ››写给初学者:多线程系列( 十)——死锁(Deadlock)...
- ››写给初学者:多线程系列( 十一)——线程池(Thread...
- ››写给初学者:多线程系列(一)——线程的概念
- ››写给初学者:多线程系列(二)—— Thread类(线程类...
- ››写给初学者:多线程系列(三)——线程的优先级
- ››写给初学者:多线程系列(四)——线程的插入 Join(...
- ››写给初学者:多线程系列(五)——线程的状态
- ››写给初学者:多线程系列(六)——线程同步的概念
- ››写给初学者:多线程系列(七)——互锁(Interlocke...
- ››写给初学者:多线程系列(八)——管程类(Monitor类...
- ››写给初学者:多线程系列( 九)——互斥体(Mutex类...
更多精彩
赞助商链接