自分のフォームで使用するには、このウィンドウの下部を複製する必要があります。
質問する
45 次
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 に答える