Zrobiłem formularz i wyciągnąłem w nim szklankę jak na poniższym obrazku. Ale kiedy przesuwanie okna nie jest widoczne na ekranie, renderowanie szkła jest nieprawidłowe po jego przeniesieniu: Szkło nie jest renderowane
Jak mogę to zrobić, aby okno było poprawnie renderowane?
To jest mój kod:
[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);
}
}
Skąd wiesz, co jest renderowane, jeśli nie jest widoczne? – Gabe
Nie wiesz, co masz na myśli ... czy mówisz, że jeśli przesuniesz okno poza krawędź ekranu iz powrotem, szkło zniknęło w sekcji, w której okno przecinało się z krawędzią ekranu? – series0ne
P.S. W przeszłości wiele razy używałam szkła. Szukaj Daniela Motha i Glassa w Google ... On wydaje się być guru z efektami szkła !! – series0ne