Hice una forma y extendí el vidrio como en la imagen de abajo. Pero cuando muevo la ventana para que no todo esté visible en la pantalla, la representación del vidrio es incorrecta después de moverla hacia atrás: El vidrio no se representa correctamente
¿Cómo puedo manejar esto para que la ventana se represente correctamente?
Este es mi código:
[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);
}
}
¿Cómo sabe qué se representa si no está visible? – Gabe
No está seguro de lo que quiere decir ... ¿está diciendo que si mueve la ventana más allá del borde de la pantalla y la vuelve a hacer, el cristal ha desaparecido en la sección donde la ventana se cruzó con el borde de la pantalla? – series0ne
P.S. He visto el uso del vidrio muchas veces en el pasado. Busca a Daniel Moth y Glass en Google ... ¡Parece ser un gurú con efectos de cristal! – series0ne