none
我重写了窗体的NCPAINT事件,马上就发现窗体的阴影效果没有了,请问如果要自己绘制阴影的话,用什么方法? RRS feed

  • 问题

  • 在WINDOWS7环境下,我重写了窗体的NCPAINT事件,马上就发现窗体的阴影效果没有了,请问如果要自己绘制阴影的话,用什么方法?

    我尝试在NCPAINT里面绘制一个预先在PS中做好的半透明图片,但是发现无论我怎么绘制,都只能够在窗体内部绘制内容,而窗体的阴影效果应该是在窗体外围的,请问我应该如何才可以在窗体的外围绘制内容呢?


    da jia hao!

    2015年3月5日 3:56

答案

  • 你好:

    可以尝试一下这个方法:

    public class ShadowedForm : Form {
        protected override CreateParams CreateParams {
            get {
                const int CS_DROPSHADOW = 0x20000;
                CreateParams cp = base.CreateParams;
                cp.ClassStyle |= CS_DROPSHADOW;
                return cp;
            }
        }
    
        // ... other code ...
    }

    绘制自己的阴影的话可以尝试叠加另外一个form,没有尝试过这样做,建议你还是通过WPF来实现,Winform很难做到很理想的阴影效果。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 liubin 2015年3月10日 5:20
    2015年3月9日 8:12
    版主