0
ラベルテキストにグラデーションを適用できますか?グラデーションラベルを描画
今、私はコントロールのOnPaintを引き継いで、必要なテキストの文字列を描画しています。しかし、これは具体的なものです。私は本当にラベル自体が私が欲しいグラデーションの色が適用されるようにしたい。したがって、各文字は、テキストが変更されたときに指定された勾配を持ちます。
ForeColorを使用する代わりに、私はLinearGradientBrushを適用します。私は現時点でWinFormsを使用しています。ここで
EDIT 1
は、私が現在使用しているコードです。ただし、これはすべての文字に勾配を適用するだけです。文字列の各文字が適用されるように変更したいと思います。
// Draw the formatted text string to the DrawingContext of the control.
Font font = new Font("BankGothic Md BT", 48f, FontStyle.Bold);
LinearGradientBrush brush = new LinearGradientBrush(label1.Location, new Point(label1.Width, label1.Height), Color.Goldenrod, Color.Black);
e.Graphics.DrawString(label1.Text, font, brush, 0,0);
編集ここ2
は私がやったことです。私はLabelクラスを継承し、OnPaintを継承しました。
public partial class LabelEx : Label {
public LabelEx() {
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e) {
// Draw the formatted text string to the DrawingContext of the control.
//base.OnPaint(e);
Font font = new Font("Tahoma", 48f, FontStyle.Bold);
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, Width, Height + 5), Color.Gold, Color.Black, LinearGradientMode.Vertical);
e.Graphics.DrawString(Text, font, brush, 0, 0);
}
}
これは私にすばらしい勾配のテキストラベルを与えます。
ありがとうございます!
私の頭の上には、GraphicsPathにテキストを追加し、あなたのブラシでパスを描画してみてください。 –
フレームワークのバージョン4を使用している場合は、 'FormattedText'オブジェクトが役に立ちます:http://msdn.microsoft.com/en-us/library/ms752098.aspx – SeeSharp
@SeeSharpこれは非常にそうですWPF固有のものです。 WinFormsにはOnRenderメソッドがありません。 – meanbunny