ASP.NET: жирные слова в тексте на изображении - PullRequest
0 голосов
/ 25 мая 2009

Я пытаюсь динамически записать текст в изображение, но мне бы хотелось выделить жирным шрифтом выделенное слово в предложении. Я разделил строку на три строки: первую часть, слово, выделенное жирным шрифтом, и оставшуюся часть предложения. Однако когда я пытаюсь нарисовать их на изображении (.DrawString()), они не объединяются, а перезаписывают друг друга. Можно ли каким-либо образом восстановить предложение (выделение жирным шрифтом среднего слова) на изображении?

Спасибо! * * 1004

РЕДАКТИРОВАТЬ: Пример кода:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim w As Word = Word.GetLastPublishedWord()
    Dim wordForm As String = Word.FindWordForm(w.Word, w.Sentence, Word.RegexOutputType.StandardString)
    Dim firstPart As String = Left(w.Sentence, w.Sentence.IndexOf(wordForm))
    Dim lastPart As String = Right(w.Sentence, (w.Sentence.Length - firstPart.Length - wordForm.Length))

    Dim sig As Image = Image.FromFile(Server.MapPath(ResolveUrl("~/images/sig.jpg")))
    Dim text As Graphics = Graphics.FromImage(sig)
    text.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    Dim sentenceRec As New RectangleF(0, 0, 400, 75)
    Dim tagRec As New RectangleF(250, 75, 150, 25)
    text.DrawString(firstPart, New Font("Arial", 12, FontStyle.Regular), SystemBrushes.WindowText, sentenceRec)
    text.DrawString(wordForm, New Font("Arial", 12, FontStyle.Bold), SystemBrushes.WindowText, sentenceRec)
    text.DrawString(lastPart, New Font("Arial", 12, FontStyle.Regular), SystemBrushes.WindowText, sentenceRec)

    Response.ContentType = "image/jpeg"
    sig.Save(Response.OutputStream, ImageFormat.Jpeg)
    sig.Dispose()
    text.Dispose()
End Sub

1 Ответ

1 голос
/ 25 мая 2009

Вам нужно увеличивать точку вставки при записи текста в графический объект.

PointF insertionPoint;
SizeF textWidth = g.MeasureString("First ", normalFont);

g.DrawString("First ", normalFont, Brushes.Black, insertionPoint);

insertionPoint.X += textWidth.Width;
textWidth = g.MeasureString("bolded", boldFont);
g.DrawString("bolded", boldFont, Brushes.Black, insertionPoint);

insertionPoint.X += textWidth.Width;
g.DrawString(" and remaining.", normalFont, Brushes.Black, insertionPoint);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...