Рисуване на текст върху изображение

Никога преди не съм работил с рисуване и имам малък проблем. Не мога да накарам изхода на този код да работи.

Файлът се записва, но не рисува върху текста. Може ли някой да види какво може да съм направил грешно?

РЕДАКТИРАНЕ: Глупава грешка - фонът на изображението беше бял (а цветът на четката беше!). Текстът обаче не е центриран, както бих очаквал. Някакви идеи защо ТАКА? :)

РЕДАКТИРАНЕ: Изображението е по-долу.

въведете описание на изображението тук

Благодаря

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