none
关于WPF和WinForm控件的问题! RRS feed

  • 问题

  • 在WPF工程中加载Winform控件 想让Winform控件的backcolor透明如何能够做到!找了半天了 一点结果也没有

    用BackColor=System.Drawing.Color.Transparent 只是让Winform控件继承了父控件的背景色,如果父控件是一个图片的话也全部继承过来了,所以我想找到一个好的解决办法,请大家帮帮我。

    对了 关于WPF和WindowsFormHost 层的问题我已经解决,我是给WPF控件加ElementHost,谢谢斑竹的指点。

    2011年9月7日 6:21

答案

  • 是不可能做到的,你要先了解GDI+的绘制机制本身是没有透明或者半透明的。更不可能使GDI+和DX两者混在一起 (后者在WPF叫做Air Space 问题,具体看 http://msdn.microsoft.com/zh-cn/library/aa970688.aspx 当然据我了解,目前WPF产品研发组正在尝试攻克这个AirSpace限制)。

    在GDI+中,只有所谓Layed Window的对象才可能具有透明度,但是他又和WPF机制完全隔离,所以即使我们在Hosted的Winform上强加了透明,其实还是不可能做到透明的,系统是不会允许他下方的WPF层上的元素在Winform的透明区域中显示的。

    所以,在Winform和WPF融合情况下,限制比较多,你要考虑到这些限制中那些是要取舍得。尽可能满足主要业务需求,来配合使用Winform和WPF整合技术。

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月7日 10:46
    版主

全部回复

  • 是不可能做到的,你要先了解GDI+的绘制机制本身是没有透明或者半透明的。更不可能使GDI+和DX两者混在一起 (后者在WPF叫做Air Space 问题,具体看 http://msdn.microsoft.com/zh-cn/library/aa970688.aspx 当然据我了解,目前WPF产品研发组正在尝试攻克这个AirSpace限制)。

    在GDI+中,只有所谓Layed Window的对象才可能具有透明度,但是他又和WPF机制完全隔离,所以即使我们在Hosted的Winform上强加了透明,其实还是不可能做到透明的,系统是不会允许他下方的WPF层上的元素在Winform的透明区域中显示的。

    所以,在Winform和WPF融合情况下,限制比较多,你要考虑到这些限制中那些是要取舍得。尽可能满足主要业务需求,来配合使用Winform和WPF整合技术。

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月7日 10:46
    版主
  • 看来我只能对 WPF和Winform之间做取舍了,谢谢Bob Bao版主的回复!


    2011年9月8日 2:05