рисовать строку с прозрачным фоном, используя C #? - PullRequest
1 голос
/ 24 октября 2010

Стандартный способ g.DrawString создает серый фон.Поэтому, если на форму наложить еще одну строку, часть будет выглядеть серой.

Мой вопрос: есть ли способ нарисовать строку с прозрачным фоном?я хочу иметь возможность накладывать строки, но при этом видеть их.

Ответы [ 2 ]

4 голосов
/ 24 октября 2010

Вы уверены?

Вот учебник, который может помочь:
http://www.switchonthecode.com/tutorials/csharp-snippet-tutorial-how-to-draw-text-on-an-image

(редактировать)

Попробуйте начатьиз основ: я только что создал новое приложение для форм и изменил код в Form1 следующим образом:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Paint += new PaintEventHandler(Form1_Paint);

    }

    void Form1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawString("hello", new Font("Arial", 36), new SolidBrush(Color.FromArgb(255,0,0)), new Point(20,20));
        e.Graphics.DrawString("world", new Font("Arial", 36), new SolidBrush(Color.FromArgb(0,0,255)), new Point(30,30));

    }

}

Он работает как положено, с прозрачным фоном для текста.

2 голосов
/ 24 октября 2010

Это невозможно диагностировать, не отправив код.По умолчанию Graphics.DrawString не рисует фон.Этот пример формы демонстрирует это:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }
    protected override void OnPaint(PaintEventArgs e) {
        e.Graphics.DrawString("Underneath", this.Font, Brushes.Black, 0, 0);
        e.Graphics.DrawString("Overlap", this.Font, Brushes.Black, 25, 5);
        base.OnPaint(e);
    }
}

Обратите внимание, что строка «Перекрытие» не стирает строку «Под».

...