0

自分のフォームで使用するには、このウィンドウの下部を複製する必要があります。

ここに画像の説明を入力

4

1 に答える 1

0

必要なことは、既存のコントロールの描画をオーバーライドするか、独自のコントロールを作成することです。Panel個人的には、ウィンドウの下部セクション全体のパネルになるコントロールの描画をオーバーライドします。

グラデーション パネルは一般的な要件であり、ここにブログ投稿があります(以下にコードを示します)。

明らかに、完全なグラデーションをペイントする必要はありませんが、ペイントがコントロールでどのように機能するかを示しています。

パネル全体の小さなサブセットを使用してグラデーションをペイントするか、次のようなものを使用してペイントGraphics.DrawPathし、正しい色で直線を描くことができます。


ブログ投稿コード(リンク切れを避けるため):

using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace PostXING.Controls
{
    /// <summary>
    /// GradientPanel is just like a regular panel except it optionally  
    /// shows a gradient.
    /// </summary>
    [ToolboxBitmap(typeof(Panel))]
    public class GradientPanel : Panel
    {
        /// <summary>
        /// Property GradientColor (Color)
        /// </summary>
        private Color _gradientColor;
        public Color GradientColor {
            get { return this._gradientColor;}
            set { this._gradientColor = value;}
        }

        /// <summary>
        /// Property Rotation (float)
        /// </summary>
        private float _rotation;
        public float Rotation {
            get { return this._rotation;}
            set { this._rotation = value;}
        }

        protected override void OnPaint(PaintEventArgs e) {
                        if(e.ClipRectangle.IsEmpty) return; //why draw if non-visible?

            using(LinearGradientBrush lgb = new 
                           LinearGradientBrush(this.ClientRectangle, 
                      this.BackColor, 
                      this.GradientColor, 
                      this.Rotation)){
                e.Graphics.FillRectangle(lgb, this.ClientRectangle);
            }

                        base.OnPaint (e); //right, want anything handled to be drawn too.
        }
    }
}
于 2012-07-16T08:55:08.610 に答える