Рисование градиента - PullRequest
       17

Рисование градиента

0 голосов
/ 20 марта 2012

Можно ли применить градиент к тексту метки?

Сейчас я беру элементы управления OnPaint и рисую нужную строку текста;однако это к конкретному.Я действительно хочу сделать так, чтобы на сам ярлык наносились нужные мне цвета градиента.Таким образом, в свою очередь каждый символ будет иметь градиент, указанный при изменении текста.

Поэтому вместо использования ForeColor я бы применил LinearGradientBrush.Я использую WinForms в данный момент.

РЕДАКТИРОВАТЬ 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);

    }
}

Что дает мне хорошую градиентную текстовую метку.

Спасибо!

1 Ответ

1 голос
/ 07 июня 2012

Вот что я сделал. Я просто расширил класс 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);

}

}
...