2009年12月23日水曜日2:09:00

カスタムウィンドウで、角丸ウィンドウ

カスタムウィンドウで、角丸にしてみた。前回のカスタムウィンドウを使用。右下は角丸にしていないです。ギザギザが気になるので、角丸の半径は小さくしてます。

        protected override void OnResize ( EventArgs e )
        {
            base.OnResize( e );

            int radius = 5;
            System.Drawing.Drawing2D.GraphicsPath path =
                new System.Drawing.Drawing2D.GraphicsPath();
            // 左上
            path.AddPie( 0, 0, radius * 2, radius * 2, 180, 90 );
            // 右上
            path.AddPie( this.Width - radius * 2, 0, radius * 2, radius * 2, 270, 90 );
            // 左下
            path.AddPie( 0, this.Height - radius * 2, radius * 2, radius * 2, 90, 90 );

            // 中央
            path.AddRectangle( new Rectangle( radius, 0, 
                                                this.Width - radius * 2, this.Height) );
            // 左
            path.AddRectangle( new Rectangle( 0, radius,
                                                radius, this.Height - radius * 2 ) );
            // 右
            path.AddRectangle( new Rectangle( this.Width - radius, radius,  
                                                radius, this.Height - radius ) );
            this.Region = new Region( path );
        }

リサイズのときに角丸になるようにしてます。なので、初期状態で角丸にならないです。そのため、ロードイベントに次のコードを入れる。

OnResize( null );

これで、初期状態でも、リサイズしたときでも、角丸になるはず。

フルスクリーンのときも角丸になるので、気になるようだったら、つぎのように変更してみたり。

            if ( this.WindowState == FormWindowState.Normal )
            {
                // 省略
            }
            else if ( this.WindowState == FormWindowState.Maximized )
            {
                path.AddRectangle( new Rectangle( 0, 0, this.Width, this.Height ) );
            }
            this.Region = new Region( path );

参考サイト

0 コメント

コメントを投稿する

0 件のコメント:

コメントを投稿

top