Ich machte eine Form und erweiterte das Glas darin wie im Bild unten. Aber wenn ich das Fenster verschiebe, damit nicht alles auf dem Bildschirm sichtbar ist, ist das Glas-Rendering falsch, nachdem ich es zurückbewege: Glas ist nicht richtig gerendert
Wie kann ich damit umgehen, damit das Fenster richtig gerendert wird?
Dies ist mein Code:
[DllImport("dwmapi.dll")]
private static extern void DwmExtendFrameIntoClientArea(IntPtr hWnd, ref Margins mg);
[DllImport("dwmapi.dll")]
private static extern void DwmIsCompositionEnabled(out bool enabled);
public struct Margins{
public int Left;
public int Right;
public int Top;
public int Bottom;
}
private void Form1_Shown(object sender, EventArgs e) {
this.CreateGraphics().FillRectangle(new SolidBrush(Color.Black), new Rectangle(0, this.ClientSize.Height - 32, this.ClientSize.Width, 32));
bool isGlassEnabled = false;
Margins margin;
margin.Top = 0;
margin.Left = 0;
margin.Bottom = 32;
margin.Right = 0;
DwmIsCompositionEnabled(out isGlassEnabled);
if (isGlassEnabled) {
DwmExtendFrameIntoClientArea(this.Handle, ref margin);
}
}
Woher wissen Sie, was gerendert wird, wenn es nicht sichtbar ist? – Gabe
Unsicher, was Sie meinen ... sagen Sie, dass, wenn Sie das Fenster über den Bildschirmrand hinaus und wieder zurück bewegen, das Glas in dem Bereich verschwunden ist, in dem sich das Fenster mit der Bildschirmkante kreuzte? – series0ne
P.S. Ich habe in der Vergangenheit viele Male Glas benutzt. Suche nach Daniel Moth und Glass in Google ... Er scheint ein Guru mit Glaseffekten zu sein !! – series0ne