下の画像のようにフォームを作成し、その中にガラスを伸ばしました。しかし、ウィンドウを移動してすべてが画面に表示されないようにすると、ウィンドウを元に戻した後のガラスのレンダリングが正しくなくなります。
ウィンドウが正しくレンダリングされるように、これをどのように処理できますか?
これは私のコードです:
[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 );
}
}