Использование FormattedText для создания растрового изображения - PullRequest
1 голос
/ 06 января 2012

В проекте C # Forms я могу написать следующий код, чтобы получить что-то похожее на то, что я хочу, но кажется, что есть два разных "мира", которые я пытаюсь объединить.

FormattedText text = new FormattedText(textBox1.Text, CultureInfo.GetCultureInfo("en-us"), System.Windows.FlowDirection.LeftToRight, new Typeface("Tahoma"), 20, System.Windows.Media.Brushes.Black);
text.MaxTextWidth = 480;
text.MaxTextHeight = 480;
DrawingVisual d = new DrawingVisual();
DrawingContext d1 = d.RenderOpen();
d1.DrawText(text, new System.Windows.Point(0, 0));
d1.Close();
RenderTargetBitmap bmp = new RenderTargetBitmap(480, 480, 120, 96, PixelFormats.Pbgra32);
bmp.Render(d);
System.Windows.Controls.Image I=new System.Windows.Controls.Image();
I.Source = bmp;

Получает мне Windows.Media.ImageSource.Я хочу перенести все это на пространство имен System.Drawing.

Так как мне пришлось импортировать библиотеки WPF, чтобы заставить работать приведенный выше код, и то, что я ищу, настолько просто, как я могу это сделать?делайте это в Windows Forms, желательно не сложным способом.

Примечание: Все, что я действительно хочу сделать, это нарисовать текст на растровом изображении таким образом, чтобы можно было переносить строки и затемманипулировать им как растровое изображение.Если есть более простой способ сделать это (в Windows Forms), он бы работал так же хорошо, если не лучше.

1 Ответ

3 голосов
/ 06 января 2012

Да, это код WPF, совершенно другой мир. Версия System.Drawing должна выглядеть примерно так:

var bmp = new Bitmap(480, 480);
using (var gr = Graphics.FromImage(bmp)) {
    gr.Clear(Color.White);
    TextRenderer.DrawText(gr, textBox1.Text, this.Font, 
        new Rectangle(0, 0, bmp.Width, bmp.Height), 
        Color.Black, Color.White,
        TextFormatFlags.WordBreak | TextFormatFlags.Left);
}
if (pictureBox1.Image != null) pictureBox1.Image.Dispose();
pictureBox1.Image = bmp;

Я угадал на картинке в форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...