Нанесение текста на изображение

Я никогда раньше не занимался рисованием, и у меня возникла небольшая проблема. Кажется, я не могу заставить работать вывод этого кода.

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

РЕДАКТИРОВАТЬ: Глупая ошибка - фон изображения был белым (и цвет кисти был!). Однако текст не центрирован, как я и ожидал. Любые идеи, почему ТАК? :)

РЕДАКТИРОВАТЬ: изображение ниже.

введите здесь описание изображения

Спасибо

Bitmap myBitmap = new Bitmap(@"C:\Users\Scott\desktop\blank.bmp");
Graphics g = Graphics.FromImage(myBitmap);

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
g.DrawString("My\nText", 
             new Font("Tahoma", 20), 
             Brushes.White, 
             new PointF(0, 0));

StringFormat strFormat = new StringFormat();
strFormat.Alignment = StringAlignment.Center;
strFormat.LineAlignment = StringAlignment.Center;

g.DrawString("My\nText", 
             new Font("Tahoma", 20), Brushes.White, 
             new RectangleF(0, 0, 500, 500), 
             strFormat);
myBitmap.Save(@"C:\Users\Scott\desktop\blank1.bmp");

person loveforfire33    schedule 19.06.2013    source источник
comment
Исходное изображение белое? Добавьте эту строку g.Clear(Colors.Black); сразу после этой строки Graphics g = Graphics.FromImage(myBitmap); и проверьте вывод. Это должен быть белый текст на черном фоне. И не забудьте удалить графику после сохранения вызова изображения g.Dispose();   -  person Nikola Davidovic    schedule 19.06.2013
comment
Лол, да, я только что сам это заметил. Спасибо большое! Текст не центрирован, хотя я ожидал каких-либо сведений о том, почему? :)   -  person loveforfire33    schedule 19.06.2013
comment
Если не по центру, то что? Можете ли вы опубликовать изображение?   -  person Nico Schertler    schedule 19.06.2013
comment
Извините, добавил изображение.   -  person loveforfire33    schedule 19.06.2013
comment
Вы изменили кисть второго вызова DrawString? То, что вы нам показываете, — это только результат первого вызова DrawString. Ваш код работает просто отлично.   -  person Nikola Davidovic    schedule 19.06.2013
comment
Кроме того, вы не можете видеть второй текст, если растровое изображение слишком маленькое, измените код на этот: g.DrawString("My\nText", new Font("Tahoma", 20), Brushes.White, new RectangleF(0, 0, myBitmap.Width, myBitmap.Height), strFormat);, и вы должны увидеть второй вывод.   -  person Nikola Davidovic    schedule 19.06.2013
comment
Ургх, у меня один из тех дней, ты был совершенно прав. Спасибо большое!   -  person loveforfire33    schedule 19.06.2013


Ответы (1)


Я уверен, что вы можете искать это.

rectf = new RectangleF(655, 460, 535, 90); //rectf for My Text
using(Graphics g = Graphics.FromImage(myBitmap))
{
    //g.DrawRectangle(new Pen(Color.Red, 2), 655, 460, 535, 90); 
    g.SmoothingMode = SmoothingMode.AntiAlias;
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
    StringFormat sf = new StringFormat();
    sf.Alignment = StringAlignment.Center;
    sf.LineAlignment = StringAlignment.Center;
    g.DrawString("My\nText", new System.Drawing.Font("Tahoma", 32, FontStyle.Bold), Brushes.Black, rectf, sf);
}

//g.DrawRectangle(new Pen(Color.Red, 2), 655, 460, 535, 90); Линия используется, чтобы показать, где будет написан ваш текст. Поэтому, прежде чем вы на самом деле сделаете свой текст, вы можете увидеть, где этот прямоугольник будет создан на изображении. Если вам нужен центр изображения, вы можете найти высоту и ширину и разделить их на 2, чтобы найти центр изображения, а затем соответствующим образом построить параметры прямоугольника.

person Mohit Shrivastava    schedule 07.09.2015