我在一大的Image里Load了一BMP图,然后在大的Image里放入若干小Image和Edit,目的是用来显示从数据库中查询的数据。当我在在大Image里绘图时,为何那些小Image和Edit总是闪烁? 
   另:为什么当我用Canvas的Rectangle、Ellipse等方法绘图时,所绘制的图形总是实心的(图形的中央部分总是要覆盖其背景)???
    请各位高手指教!

解决方案 »

  1.   

    彻底解决用directdraw,directX,
    减轻则打开双缓冲: doublebuffed := true;canvas画笔画刷十分类型的,什么solid等,要设置一下。
      

  2.   

    1 用内存DC拷贝
    2 自己控制WM_ONPAINT,只重画鼠标移动(绘图)的矩形
    --------------------------------------
    看!
    那支正飞向太阳的蛾子.....
    就是我!
    --------------------------------------
      

  3.   

    bmp文件太大,你把它转换成jgp格式,窗体先不显示,等到窗体建好,图片加载完之后再将窗体的visiable设置成True;
      

  4.   

    非常感谢各位的热情指导!
    因本人才疏学浅,涉足Delphi时间不长,能否在指导时给予详细说明?(最好有代码)
    恳请各位继续指教!
    谢谢!
      

  5.   

    不实心: canvas.brush.style := bsClear;
      

  6.   

    >>不实心: canvas.brush.style := bsClear;
    是这样的。image上放image,肯定会闪烁的。。可考虑 doublebuffed := true;也可在Image上放PaintBox, 这样就不会闪了。
    但paintbox不会维护自己的刷新,自己要在onpaint事件中写
      

  7.   

    如果还是弄不明白,可以把代码email给我,[email protected]
    我帮你调。。
      

  8.   

    非常感谢各位大侠的真诚赐教!
     经过各位的指教,我已经解决了前面的问题。
      还想问一下:怎样实现类似Windows的画图工具的“橡皮檫”、“油漆桶”和“画刷”功能?怎样实现不同宽度的线型? 我在Image的Canvas上用InputBox写文字时,有时点击InputBox的Cancel按纽,却不退出,有时要点击2~3下才行。这是否是什么Bug?我用的是D6 。
     多谢各位!!!
      

  9.   

    doublebuffered := true;
    应该写在哪里?它是谁的属性?
      

  10.   

    http://expert.csdn.net/Expert/topic/1904/1904043.xml?temp=.7446405谢谢
      

  11.   

    我也有同样的问题,但是不太明白doublebuffered := true;
    应该写在哪里?它是谁的属性?image没有这个东西。
      

  12.   

    是这样的: Image的父容器.doublebuffered := true 。比如,我的Image的父容器是form1,那么,代码就是: form1.doublebuffered := true 。愿大家共同进步!