Я рисую строку с g.DrawString
на изображении.Прежде чем сделать это, я также рисую изображения на исходном изображении.
Вот как выглядит мой код:
Bitmap sourceBitmap = Image.FromFile(myBitmap) as Bitmap;
Graphics g = Graphics.FromImage(sourceBitmap);
// drawing some other images on sourceBitmap with g.DrawImage
int positionx = 100;
Font ftemp = cvt.ConvertFromString(myfont) as Font; // predefined font
SizeF mysize = TextRenderer.MeasureText(mytext, ftemp);
PointF myposition = new PointF(positionx - mysize.Width, positiony) // align right
g.DrawString(mytext, ftemp, new SolidBrush(mycolor), myposition);
Вот что я получаю:
Если я теперь добавлю эти две строки перед уже упомянутым кодом, как это:
Bitmap sourceBitmap = Image.FromFile(myBitmap) as Bitmap;
Graphics g = Graphics.FromImage(sourceBitmap);
// drawing some other images on sourceBitmap with g.DrawImage
sourceBitmap = new Bitmap(sourceBitmap); // sourceBitmap is the bitmap (png) I'm drawing on from the very beginning.
g = Graphics.FromImage((Image)sourceBitmap);
int positionx = 100;
Font ftemp = cvt.ConvertFromString(myfont) as Font; // predefined font
SizeF mysize = TextRenderer.MeasureText(mytext, ftemp);
PointF myposition = new PointF(positionx - mysize.Width, positiony) // align right
g.DrawString(mytext, ftemp, new SolidBrush(mycolor), myposition);
Я получу это:
Я ничего не изменил, кроме этих двухлиний.Поэтому мой вопрос: как это происходит?