【发布时间】:2013-11-27 01:32:01
【问题描述】:
有没有办法为无边框表单创建阴影,当表单调整大小时不会闪烁?现在我正在使用 CreateParams。
protected override CreateParams CreateParams
{
get
{
const int CS_DROPSHADOW = 0x20000;
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CS_DROPSHADOW;
return cp;
}
}
但是当窗体调整大小时,阴影部分变成白色,然后又变回阴影,闪烁。表格的其余部分不是因为我使用了this.DoubleBuffered = true;
感谢您提供任何帮助,谢谢!
编辑:
我使用 SendMessage
private const int WM_NCLBUTTONDOWN = 0xa1;SendMessage(handle, WM_NCLBUTTONDOWN, dir, 0);
dir 是一个 int,取决于我要调整表单大小的方向。
【问题讨论】:
-
Is there a way to create a shadow for a borderless form that doesn't flicker when the form is resized?- 是的,它叫做 WPF。 -
看起来您的表单是无边界的,并且您自定义了调整大小的行为,这可能很重要并会导致您的问题。
-
你能澄清一下
the shadow part turns white, then back to a shadow吗?什么时候发生?我的意思是,每当您调整任何边框(左、上、右、下)或只是上和左(然后闪烁的边缘分别是下和右)时,都会发生这种情况。我尝试了一些自定义调整大小的代码,看起来这是唯一的问题(调整顶部和左侧边缘的大小可能会导致对边有点闪烁) -
是的,当我从任何边框调整大小时,阴影都会闪烁。
-
@Blue0500:我在这里回答了:stackoverflow.com/questions/60913399/… 请检查它是否对您有帮助
标签: c# winforms shadow flicker