慕勒3428872
好的,假设您想在C#中的图像上绘制字符串,则需要在此处使用System.Drawing命名空间:private Image DrawText(String text, Font font, Color textColor, Color backColor){ //first, create a dummy bitmap just to get a graphics object Image img = new Bitmap(1, 1); Graphics drawing = Graphics.FromImage(img); //measure the string to see how big the image needs to be SizeF textSize = drawing.MeasureString(text, font); //free up the dummy image and old graphics object img.Dispose(); drawing.Dispose(); //create a new image of the right size img = new Bitmap((int) textSize.Width, (int)textSize.Height); drawing = Graphics.FromImage(img); //paint the background drawing.Clear(backColor); //create a brush for the text Brush textBrush = new SolidBrush(textColor); drawing.DrawString(text, font, textBrush, 0, 0); drawing.Save(); textBrush.Dispose(); drawing.Dispose(); return img;}此代码将首先测量字符串,然后创建正确大小的图像。如果要保存此函数的返回,只需调用返回图像的Save方法。
DIEA
谢谢卡扎尔。对以前使用USING处置图像/图形对象以及引入最小尺寸参数后的使用方法的回答略有改进 private Image DrawTextImage(String currencyCode, Font font, Color textColor, Color backColor) { return DrawTextImage(currencyCode, font, textColor, backColor, Size.Empty); } private Image DrawTextImage(String currencyCode, Font font, Color textColor, Color backColor, Size minSize) { //first, create a dummy bitmap just to get a graphics object SizeF textSize; using (Image img = new Bitmap(1, 1)) { using (Graphics drawing = Graphics.FromImage(img)) { //measure the string to see how big the image needs to be textSize = drawing.MeasureString(currencyCode, font); if (!minSize.IsEmpty) { textSize.Width = textSize.Width > minSize.Width ? textSize.Width : minSize.Width; textSize.Height = textSize.Height > minSize.Height ? textSize.Height : minSize.Height; } } } //create a new image of the right size Image retImg = new Bitmap((int)textSize.Width, (int)textSize.Height); using (var drawing = Graphics.FromImage(retImg)) { //paint the background drawing.Clear(backColor); //create a brush for the text using (Brush textBrush = new SolidBrush(textColor)) { drawing.DrawString(currencyCode, font, textBrush, 0, 0); drawing.Save(); } } return retImg; }