相关疑难解决方法(0)

WPF无边框窗口的DropShadow

我有一个WPF窗口,WindowStyle设置为none.有没有什么方法可以强制这个窗口放下一个阴影(就像你在WindowStyle不是没有时得到的那个)?我不想将AllowTransparency设置为true,因为它会影响性能.而且我也不想禁用硬件渲染(我在某处读到透明度在禁用时效果更好).

windows wpf transparency dropshadow

24
推荐指数
2
解决办法
3万
查看次数

WPF无边框窗口,带有影子VS2012风格

我正在尝试创建一个看起来像Visual Studio 2012的应用程序.我使用WindowChrome删除了窗口边框,并更改了我的xaml中的边框颜色.

我不知道怎么做是画出窗户的阴影,在这里你可以看到我所说的截图:

带有阴影的Visual Studio无边框窗口

如你所见,有一个阴影,它的颜色也是边框颜色

你知道如何使用WPF实现它吗?

c# wpf user-interface visual-studio-2012

21
推荐指数
2
解决办法
3万
查看次数

Windows 7风格的Dropshadow采用无边框形式

精简版:

目标: C#中无边界WinForm中的深色,黑暗,Windows 7阴影


已知的现有解决方案1:使用CreateParams的简单XP风格的阴影.

问题:太弱,太轻,太难看.


已知的现有解决方案2:用位图替换形式的GDI.

问题:失去使用控件的功能,仅作为启动画面使用.


这篇文章的目标:找到这个问题的中位数解决方案,或者更好地解决这个问题.

...

长版:

(编辑:我指的是沿着任何窗体边界的阴影,如果不清楚的话.)我知道有一种方法可以在C#中使用以下方法制作XP风格的阴影:

C#Code 1 - 简单的XP风格的阴影(问题:点亮,变弱,变丑)

// Define the CS_DROPSHADOW constant
private const int CS_DROPSHADOW = 0x00020000;

// Override the CreateParams property
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ClassStyle |= CS_DROPSHADOW;
        return cp;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我试图弄清楚如何使它们看起来像Windows 7中的做(更深和更大的阴影),并且无法找出最佳方法.

我有一个现在创建的方法,让我覆盖整个表格GDI,看起来像一个启动画面(信不信任):

C#代码2:用位图替换表单GDI(问题:不能使用表单控件,难以维护GUI)

    public void SetBitmap(Bitmap bitmap, byte opacity)
    {
        if (bitmap.PixelFormat != PixelFormat.Format32bppArgb)
            throw new ApplicationException("The bitmap must be 32ppp with alpha-channel.");

        // …
Run Code Online (Sandbox Code Playgroud)

.net c# user-interface windows-7 winforms

13
推荐指数
1
解决办法
2万
查看次数