2012-05-05 2 views
0


Письмо 3 Размер текста на изображении

Можно ли написать 3D-текст на изображении. Я использую asp.net с C#. Если возможно, то любезно дайте мне некоторую идею.



вот мой метод ввода текста на изображение

private readonly string _textOnImage = ConfigurationManager.AppSettings["textOnImage"]; private readonly int _opacity = Int32.Parse(ConfigurationManager.AppSettings["opicity"]); private readonly int _red = Int32.Parse(ConfigurationManager.AppSettings["red"]); private readonly int _green = Int32.Parse(ConfigurationManager.AppSettings["green"]); private readonly int _blue = Int32.Parse(ConfigurationManager.AppSettings["blue"]); private int _fontSize = Int32.Parse(ConfigurationManager.AppSettings["fontSize"]); private readonly String _fontName = ConfigurationManager.AppSettings["fontName"];

private bool _havException { get; set; } private string _exceptionMessage { get; set; } private Bitmap SourceImage { get; set; } private Bitmap DestinationImage { get; set; } public ImageMethods() { _havException = false; _exceptionMessage = string.Empty; }

public void AddWatermarkText(Image img, String TextOnImage) { TextOnImage = TextOnImage ?? _textOnImage; try { var lobFromImage = Graphics.FromImage(img); FindFontSize(lobFromImage, img, TextOnImage); var lobFont = new Font(_fontName, _fontSize, FontStyle.Regular); var lintTextHw = lobFromImage.MeasureString(TextOnImage, lobFont); var lintTextOnImageWidth = (int)lintTextHw.Width; var lintTextOnImageHeight = (int)lintTextHw.Height; var lobSolidBrush = new SolidBrush(Color.FromArgb(_opacity, Color.FromArgb(_red, _green, _blue))); var posLeft = (img.Width - lintTextOnImageWidth)/2; posLeft = posLeft > 0 ? posLeft : 5; var lobPoint = new Point(posLeft, (img.Height/2) - (lintTextOnImageHeight/2)); // var lobPoint = new Point(RandomNumber(0, img.Width - lintTextOnImageWidth), RandomNumber(0, img.Height - lintTextOnImageHeight)); lobFromImage.DrawString(TextOnImage, lobFont, lobSolidBrush, lobPoint, StringFormat.GenericTypographic); lobFromImage.Dispose(); lobSolidBrush.Dispose(); lobFont.Dispose(); } catch (Exception ex) { _havException = true; _exceptionMessage = ex.Message; } return; } private void FindFontSize(Graphics lobGraphics, Image lobImage ,String textOnImage) { var lobFont = new Font(_fontName, _fontSize, FontStyle.Regular); var lintTextHw = lobGraphics.MeasureString(textOnImage, lobFont); var lintTextOnImageWidth = (int)lintTextHw.Width; var lintImageWidth = lobImage.Width ; while (lintImageWidth < lintTextOnImageWidth) { lobFont = new Font(_fontName, _fontSize--, FontStyle.Regular); lintTextOnImageWidth = (int)lobGraphics.MeasureString(textOnImage, lobFont).Width; } }
+0

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

+0

С помощью «draw вручную» я имел в виду, что вы должны на самом деле ** нарисовать ** цифры на нем, представляющие текст. Метод «DrawString» не может выполнять 3D-текст. – MarioDS

ответ

0

Да, это возможно, но вы должны сделать это вручную.

Чтобы начать работу с изображением, обратитесь к this.

Далее исследуем пространство имен System.Drawing, в частности класс Graphics, который имеет методы рисования и также используется в вышеупомянутом сообщении.

+0

Я отредактировал мой вопрос, любезно предложите мне, как? –

+0

@krshekhar Я не думаю, что вы понимаете, я не думаю, что есть способ написать 3D-текст. Один из способов сделать это - использовать двойной текст. – MarioDS

+0

Можете ли вы предоставить мне пример для этого. –

Смежные вопросы