Ho creato una forma e ho esteso il vetro come nell'immagine qui sotto. Ma quando mi muovo la finestra in modo non tutto è visibile sullo schermo, il rendering di vetro è sbagliato dopo mi muovo indietro: Il vetro non viene visualizzato a destra
Come posso gestire questo modo la finestra è resa correttamente?
Questo è il mio codice:
[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);
}
}
Come fai a sapere cosa viene visualizzato se non è visibile? – Gabe
Non sei sicuro di cosa intendi ... stai dicendo che se muovi la finestra oltre il bordo dello schermo e di nuovo indietro, il vetro è scomparso nella sezione in cui la finestra si interseca con il bordo dello schermo? – series0ne
P.S. Ho cercato di usare il vetro molte volte in passato. Cerca Daniel Moth and Glass in Google ... Sembra un guru con effetti di vetro !! – series0ne