加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 绘图添加滚动条

(2012-11-22 10:22:27)
标签:

c

滚动条

绘图

分类: coding

1.       显示图片

a)         PictureBox

PictureBox自身没有滚动条功能,所以有时大图片看不到。这时就可以利用Panel自带滚动条,给PictureBox添加滚动条。具体步骤如下:

设置Pannel属性AutoScrolltrue

设置PictureBox属性SizeModeAutoSize

2.       显示自定义绘图

a)         重载OnPaint()方法

估计绘图大小,设置this.AutoScrollMinSize = new Size(1500, 9000);其中(15009000)为估计的绘图大小,当窗口显示尺寸小于此大小时,自动添加滚动条;

重写OnPaint()方法,代码示例如下:

//重写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);

        }

需要注意的是TranslateTransform()方法的使用,此方法负责调整滚动条移动后的相对坐标系显示,Graphics对象绘制图形时并不知道滚动条的变化情况,默认情况下它总是以“工作区左上角”为原点绘制图形的,即它描点时的坐标总是参照“工作区左上角”的。形象地说就是,它总是把文档的左上角和工作区的左上角对齐,然后把文档贴在工作区上。(参见http://www.cnblogs.com/BeginnerClassroom/archive/2009/06/23/1509414.html

b)         直接在pannel上绘图

区别就在创建Graphics 对象,对于Panel对象,Graphics g = pictureBox1.CreateGraphics();其他基本相同,请读者自行解决。

c)         PictureBox中绘图

同上。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有