我有一个WPF窗口,WindowStyle设置为none.有没有什么方法可以强制这个窗口放下一个阴影(就像你在WindowStyle不是没有时得到的那个)?我不想将AllowTransparency设置为true,因为它会影响性能.而且我也不想禁用硬件渲染(我在某处读到透明度在禁用时效果更好).
我正在尝试创建一个看起来像Visual Studio 2012的应用程序.我使用WindowChrome删除了窗口边框,并更改了我的xaml中的边框颜色.
我不知道怎么做是画出窗户的阴影,在这里你可以看到我所说的截图:

如你所见,有一个阴影,它的颜色也是边框颜色
你知道如何使用WPF实现它吗?
精简版:
目标: 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)