| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1216 人关注过本帖
标题:C# winform 中画网格
只看楼主 加入收藏
gxlove
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-6-30
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:4 
C# winform 中画网格
怎么在winform中实现像photoshop等图像处理软件,显示网格功能,而且显示很快!我试了一下直接在winfrom中能画网格,但画大网格时就非常非常慢,比如:画单元格为32px的2000x2000的网格那是非常非常慢。如果改为以下缓存画图,当行列数超过400时就报错。
        Bitmap bmp = new Bitmap(2000*32, 2000*32);
            Graphics g = Graphics.FromImage(bmp);
            pictureBox1.Image = bmp;
           for (int c = 0; c < 2000; c++)
            {
                x1 = 2000 * 32;
                y1 = 0;
                x2 = 2000 * 32;
                y2 = 2000* 32;
                g.DrawLine(p,x1,y1,x2,y2);
            }
                pictureBox1.Image = bmp;

图像处理等软件的网格绘制如此之快,请问怎么实现?谢谢!
搜索更多相关主题的帖子: photoshop 而且 软件 
2014-06-12 13:51
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:7 
大小取决于本机内存和色深

[ 本帖最后由 wangnannan 于 2014-6-12 14:56 编辑 ]

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-06-12 14:54
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
程序代码:
   private void button10_Click(object sender, EventArgs e)
         {
             //测试 待建图片大小
             int dw =int.Parse(textBox2.Text);
             int dh = int.Parse(textBox3.Text);
             //最大打开次数
             int n = int.Parse(textBox4.Text);
             //实际打开次数
             int i = 0;
             while (true)
             {
                 try
                 {
                     i++;
                     Bitmap dx = new Bitmap(dw, dh);
                 }
                 catch
                 {
                     MessageBox.Show("打开数量:"+i.ToString());
                     break;
                    
                 }
                 if (i == n)
                 {
                     MessageBox.Show("达到最大值:" + n.ToString());
                     break;
                 }
             }

            GC.Collect();
         } 
你可以测试一下你本机最大能打开的数量

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-06-12 14:54
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:0 
图像处理软件 咱就拿PS来说吧 那是C++开发的 可以直接操作底层的内存
而楼主呢 用的是C# 靠GC回收 GC有多垃圾 就不用多说了吧 何况还是GDI+ 没法比的 不在一个级别

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2014-06-12 14:58
gxlove
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2011-6-30
收藏
得分:0 
回复 4 楼 wangnannan
感谢wangnannan的回复。上面你的代码我测试了一下,“待建图片大小”两个都是2000,“最大打开次数”输入1000大概15秒弹出对话框“达到最大值:1000”。
用bitmap缓存画线既然不能创建太大画布,那我还是改为在pictureBox1中画。但有个问题就是当画出所有线后,窗体最大或最小化时所有的线就会被清除,这个问题怎么解决?
说一下我的项目:在winform窗体中添加了一个splitContainer1控件,然后在左边panel中添加一个pictureBox1控件,并在其中进行画网格线,当画好后窗体最大或最小化所有线就会消失。

[ 本帖最后由 gxlove 于 2014-6-12 18:54 编辑 ]
2014-06-12 18:21
快速回复:C# winform 中画网格
数据加载中...
 
   



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

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