是这样的,我在一个form上面放一个image控件,然后再在上面放其他控件,比如memo,我想让这个控件透明,可以看到下面的图片,请问如何实现,多多感谢。

解决方案 »

  1.   

    得到任意一个控件的DC,然后,在用SetBkGroud刷他的背景为透明;即可
    或者如果控件有画刷属性,那么,设置图片为背景的画刷;
      

  2.   

    不好意思,我不是很明白,可以给点代码吗,谢谢比如:我的image上面放了一个memo非常感谢
      

  3.   

    这个问题比较复杂,关系到Windows Memo本身的代码,你可以自己从TCustomMemo继承一个控件,拦截WM_ERASEBKGND和WM_PAINT消息,在前者中绘制背景(不要inherited,那个背后的Image就不用了),在后者中设置画刷为透明(bsClear,设置完成后使用inherited调用父类中的绘制方法)。然后这个Memo就可以有背景了。
      

  4.   

    必要的话设置DoubleBuffer为True来消除闪烁。当然使用第三方控件也是个不错的选择。
      

  5.   

    Ole32.dll里面有一个函数可以实现,具体可以参见Delphi 6里面TForm的原代码中关于窗口透明属性的处理,我用这种方法在VC里面实现了窗口的透明,同样适用于具有Handle的控件,不过Image控件好象没有Handle.