Longhorn風グラデーションのサンプル
Longhornのスクリーンショットを見ると真ん中が明るくて両端が暗いグラデーションが印象的。色がダークなメタリックで、都会的なクールな雰囲気を出しててカッコイイ。その上に載ってるアイコンが変で格好悪かったけど、最新のスクリーンショットではアイコンもスマートになった。
これを記念して(?)、Longhorn風グラデーションもどきのサンプル。
using System; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace Siokoshou { /// <summary>Longhorn のグラデーションもどき</summary> public class LonghornGradient : System.Windows.Forms.UserControl { private Color startColor; private Color endColor; public LonghornGradient() { SetStyle( ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true ); startColor = Color.FromArgb( 68, 86, 136 ); endColor = Color.FromArgb( 98, 142, 203 ); } [Description("Start color."), Category( "Appearance" ), DefaultValue( typeof(Color), "68, 86, 136" )] public Color StartColor { get { return startColor; } set { startColor = value; if ( this.IsHandleCreated && this.Visible ) Invalidate(); } } [Description("End color."), Category( "Appearance" ), DefaultValue( typeof(Color), "98, 142, 203" )] public Color EndColor { get { return endColor; } set { endColor = value; if ( this.IsHandleCreated && this.Visible ) Invalidate(); } } protected override void OnPaint( PaintEventArgs pe ) { Graphics g = pe.Graphics; using ( LinearGradientBrush backgroundBrush = new LinearGradientBrush( this.ClientRectangle, startColor, endColor, LinearGradientMode.Horizontal ) ) { backgroundBrush.SetSigmaBellShape( 0.5f, 1.0f ); g.FillRectangle( backgroundBrush, this.ClientRectangle ); } } } }
カスタムコントロールとして作ったので、Formにでも貼り付けて遊んでください。
StartColorとEndColorでグラデーションの開始色と終了色を指定します。
肝は SetSigmaBellShape( 0.5f, 1.0f ) の部分。釣鐘型の曲線のグラデーションを作ってくれます。
Googleによると世界でも71件しか引っかからないレアな一品です。
これを書くためにColorのDefaultValueの指定方法を調べちゃった。typeof(Color)ってすればいいんですね。Fontなんかも同様にいけるみたい。
本物のLonghornは両端で急激に明るくなるけど、そこは再現してません。なのであくまでも「もどき」です。