2009-05-25 8 views
0

Ich versuche, dynamisch Text in ein Bild zu schreiben, aber ich möchte ein ausgewähltes Wort im Satz fett formatieren. Was ich getan habe, ist die Zeichenfolge in drei Strings zu trennen, der erste Teil, das Wort, das fett gedruckt werden soll, und der Rest des Satzes. Wenn ich versuche, sie auf das Bild zu zeichnen (.DrawString()), verketten sie sich jedoch nicht, sondern überschreiben sich gegenseitig. Gibt es eine Möglichkeit, einen Satz (mit einem mittleren Wort in Fettdruck) auf einem Bild zu rekonstruieren?ASP.NET: Fett Worte im Text auf Bild

Danke!

EDIT: Beispielcode:

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 

Antwort

1

Sie müssen die Einfügemarke erhöhen, wie Sie den Text schreiben, um die Grafik-Objekt.

+0

das einzige Problem mit diesem ist, dass der Text sich wickeln wird ... deshalb habe ich das RectangleF eingeschlossen, das ein Layoutrechteck ist. Irgendwelche anderen Vorschläge? – Jason

+0

dh ich möchte, dass der Text in der Lage ist, bei 400px zu wickeln – Jason

+0

Leider gibt es in GDI + nichts, um 'Rich Text' automatisch zu behandeln. Sie müssen Ihre eigene Logik rollen, um das Wrapping zu verarbeiten. Als Referenz sollten Sie einen Blick auf http://www.codeproject.com/KB/GDI-plus/HtmlRenderer.aspx werfen, das einen HTML CSS2-Renderer erstellt, der GDI + vollständig verwendet. –