在图像上绘制文本

9
我之前从未涉及绘图,现在遇到了一点问题。我似乎无法让代码输出有效果。
文件已保存但是没有在文本上绘制。有谁能看出我哪里做错了吗?
编辑:一个傻瓜错误-图片的背景是白色(画笔颜色也是),然而文本并没有像我期望的那样居中。有任何想法吗?
编辑:下面是图片。
感谢!
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");

1
初始图像是白色的吗?在这行代码 Graphics g = Graphics.FromImage(myBitmap); 后面添加这行代码 g.Clear(Colors.Black); 并检查输出。它应该是黑色背景上的白色文本。别忘了在保存图像后释放图形资源,调用 g.Dispose(); - Nikola Davidovic
1
如果它不是居中的,那它是什么?你能发布这张图片吗? - Nico Schertler
抱歉,我添加了图片。 - loveforfire33
1
你改变了第二个DrawString调用的Brush吗?你展示给我们的只是第一个DrawString调用的输出。你的代码运行得很好。 - Nikola Davidovic
1
此外,如果您的位图太小,您将无法看到第二个文本,请将代码更改为:g.DrawString("My\nText", new Font("Tahoma", 20), Brushes.White, new RectangleF(0, 0, myBitmap.Width, myBitmap.Height), strFormat); 然后您应该能够看到第二个输出。 - Nikola Davidovic
显示剩余2条评论
1个回答

7

我相信你可能正在寻找这个。

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以找到图像的中心,然后可以相应地绘制矩形参数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接