[叩响C#之门]写给初学者:滚动条原理2011-10-17 梁斌玉 17.9.4 在滚动窗口中绘图窗体的大小由窗体的Size属性确定,这个大小包括了窗体的标题栏和边框。而窗体中用于显示客户文 档的区域称为工作区(ClientRectangle),其大小用窗体的ClientSize 属性表示(如图17-20所示)。在图17-20中,窗体的大小为308×234像素,其中标题栏的宽度为30像素,边框的宽度为4像素,所以 工作区的大小为300×200像素。如果我们要在300×200像素的工作区内显示一个200×150像素的矩形和一个300×100像素的椭圆,会 出现什么情况呢?

图17-20 在滚动窗口中绘图 图17-21 文档大小超出工作区为了叙述方便,我们把要显示的文本、图形等内容称为“文档”。因为这时文档的总高度为250像素, 而窗口工作区的高度只有200像素,所以总有一部分无法显示(如图17-21所示)。如果文档太大,工作区 不能完全显示,就需要在窗口中添加滚动条,以便查看被挡住的部分。怎样才能显示滚动条呢?这可以通过设置窗体的AutoScrollMinSize属性实现。this.AutoScrollMinSize = new Size(300, 250);因为文档的面积为300×250像素,所以我们把AutoScrollMinSize的值设置为300×250,一旦工作区面 积小于该值,窗体就会自动显示相应的滚动条。请新建一个名为“ScrollWindow”的项目,窗体大小设置为308×234像素(除去标题栏和边框,工作 区的实际大小为300×200像素),然后重写OnPaint()方法。试一试:在滚动窗口中绘图
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);}}