其实要求不多:
1. 能够划分窗体区域,显示不同的内容
2. 能够编辑显示内容在窗体中的位置和大小
3. 在点击指定区域的时候能够出发响应事件简单的说,有点像vb的界面工作区。我现在简单的作了一个,基本功能都实现了。
就是有时候画面闪的厉害。要是避免闪烁,一般要怎么做呢?
是不是至少要有两个图层,然后都启用GDI+的double buffering属性?但是我现在
的图层就是普通窗体做的,对不对呢,该怎么做呢?还有就是double buffering地用法是什么呢?

解决方案 »

  1.   

    参看
    http://www.codeproject.com/cs/media/flickerFreeDrawing.asp
      

  2.   

    技术交流群号:23266021
    欢迎大家在此讨论关于.net的各种技术。1号群
    互相学习,共同进步!
      

  3.   

    to  Knight94(愚翁):那个东东我看过了,做的是不错。不过我现在的问题是,我一在我的图层的构造函数里面添加double buffering,我的图层就不透明了,和图层本色一样了,这个不知道怎么做。那个例子里面也没有。
      

  4.   

    会闪说明你的重绘时间和区域不对. double buffer是要你先将要绘制的图形绘制在一个内存图中, 然后在重绘的时候将这个图在贴到显示设备上
      

  5.   

    GDI+的double buffer我个人觉得好像作用不大, 而且GDI+的类库不完整, 很多要自己调用API来实现, 如拖拽等功能需要使用异或的画笔,GDI+不支持, 只能自己调API
      

  6.   

    我在msdn(中文)上面看到介绍double buffer的例子,我也自己试了一下,的确把刷新频率提高了不少,但是我在调试我的程序的时候,并没有加上那么多的东东,只是在我点击窗体上的一个空间时,在图层上面画了一个框,表示被选中状态,然后再图动那个空间的时候,保持那个框不变,结果他就一直在闪,我的代码里并没有重绘那个框呀,它还闪
      

  7.   

    to 我在msdn(中文)上面看到介绍double buffer的例子,我也自己试了一下,的确把刷新频率提高了不少,但是我在调试我的程序的时候,并没有加上那么多的东东,只是在我点击窗体上的一个空间时,在图层上面画了一个框,表示被选中状态,然后再图动那个空间的时候,保持那个框不变,结果他就一直在闪,我的代码里并没有重绘那个框呀,它还闪个人感觉是你细节处理不好。因为如果你的代码中不去重画的,系统不会自己去主动重画(当然除了被遮)
      

  8.   

    大侠们能不能留个mail呀,我把我的东东发过去,帮忙看一下。就算没有解决的办法,就当一个例子好了,只是我现在的一些注释是用日文写的,运行肯定没问题的,好不好?
      

  9.   

    [email protected]是我的msn的号,欢迎一起讨论问题
      

  10.   

    我怀疑图层做的对不对,我就是用普通的wf做的,让它透明,然后让它的topmost属性为true,这样他就一直在最上面显示,是不是这种情况,在我拖动图层下面的控件的时候也会触发他刷新呢?但是我并没有发现在我拖动控件的时候,触发了我重写的图层的onpaint事件啊,refresh事件也没有触发。
      

  11.   

    建议参考一下我开发的图像处理软件PhotoSprite。
    这是一个开源软件,并且还有我的著作《图像处理精髓》对它作详细解释。
      

  12.   

    不好意思,忘了说网址了。
    http://www.PhotoSprite.com/
    这个网址目前正在加紧打造中。
    并且欢迎大家与我一起交流图像处理方面的知识,
    我的QQ:120314684,加入请注入“CSDN图像处理”
      

  13.   

    参考Paint.net的源代码和软件,
    http://www.eecs.wsu.edu/paint.net/index.html
      

  14.   

    多谢各位。只不过我现在用的是2003,不过我会想办法弄到一个2005的,然后再好好研究研究。freamwork 1.1 和 2003的例子有么?