| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 661 人关注过本帖
标题:在 vs2008,用 C# 画多条直线时卡
只看楼主 加入收藏
gxlove
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-6-30
结帖率:60%
收藏
 问题点数:0 回复次数:4 
在 vs2008,用 C# 画多条直线时卡
C#语言,在pictureBox控件中画直线时,数量少画得很快,当数量为100条时执行时间明显长了很多,卡一下才显示所画的100条直线。请大家帮看一下要怎么优化才执行快些?代码如下:
程序代码:
        
        Point[] pt;
        Point p1, p2;
        List<Point[]> pts = new List<Point[]>();
        public void InitData()
        {
            int x1, y1, x2, y2;
            for (int r = 0; r <101; r++)
            {
                x1 = 0;
                y1 = r * 32;
                x2 = 101* 32;
                y2 = r * 32;
                p1 = new Point(x1,y1);
                p2 = new Point(x2,y2);
                pt = new Point[2];
                pt[0] = p1;
                pt[1] = p2;
                pts.Add(pt);

            }
        }
       //调用画图方法
        public void myDraw()
        {
            Bitmap bmp = new Bitmap(100*32, 100*32);
            Graphics g = Graphics.FromImage(bmp);
            Pen pen = new Pen(Color.White, 1);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
            foreach (Point[] po in pts)
            {
                g.DrawLine(pen, po[0], po[1]);
            }
            pictureBox1.Image = bmp;
            pen.Dispose();
            g.Dispose();
        }
2014-06-12 00:52
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
程序代码:
在构造函数中加如下代码
      SetStyle(ControlStyles.UserPaint, true);
      SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
      SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-06-12 08:40
gxlove
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 2 楼 wangnannan
请这三句加在哪里?是加在for循环中还是放在哪?
2014-06-12 11:45
gxlove
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-6-30
收藏
得分:0 
还有个问题当Bitmap bmp = new Bitmap(100*32, 100*32);中bmp设置的宽高大于等于400*32时就报错,提示参数无效。当300*32时要7,8秒才显示。我看到类似的软件画5000条线一下显示出来,不懂怎么实现?
2014-06-12 11:51
gxlove
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-6-30
收藏
得分:0 
结贴。经测试不是双缓冲问题。而是程序问题,优化了程序,得已解决。
2014-06-14 21:34
快速回复:在 vs2008,用 C# 画多条直线时卡
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014778 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved