Avatar billede cold_raider Nybegynder
18. februar 2008 - 15:56 Der er 4 kommentarer og
1 løsning

Text Wrapping med DrawString??

Hej Eksperter!

Jeg har lavet en lille function til at lave et billede med noget tekst indeni. Det virker fint nok, men når teksten bliver for lang vil jeg gerne have at teksten wrapper og ikke bare forsvinder ud i det uendelige.

Håber i kan hjælpe, tak.

Her er min codebehind:


Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Text

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Page.IsPostBack Then
            Dim oBitmap As Bitmap = New Bitmap(400, 200) 'billede størrelse
            Dim oGraphic As Graphics = Graphics.FromImage(oBitmap)
            Dim oColor As System.Drawing.Color

            Dim sColor As String = Request("BackgroundColor")
            Dim sText As String = Request("Text")
            Dim sFont As String = Request("Font")

            Select Case sColor
                Case "red"
                    oColor = Color.Red
                Case "green"
                    oColor = Color.Green
                Case "blue"
                    oColor = Color.Blue
                Case "orange"
                    oColor = Color.Orange
                Case Else
                    oColor = Color.Gray
            End Select

            Dim oBrush As New SolidBrush(Color.Transparent)
            Dim oBrushWrite As New SolidBrush(oColor)

            oGraphic.FillRectangle(oBrush, 0, 0, 400, 200) 'fyld farve størrelse og placering på billedet
            oGraphic.TextRenderingHint = TextRenderingHint.AntiAlias

            Dim oFont As New Font(sFont, 20) 'font størrelse
            Dim oPoint As New PointF(0.0F, 0.0F) 'font placering


            Dim format As New System.Drawing.StringFormat
            format.FormatFlags = StringFormatFlags.NoClip


            oGraphic.DrawString(sText, oFont, oBrushWrite, oPoint, format)

            oBitmap.Save(Server.MapPath("gen_img.png"), ImageFormat.Png)

            Response.Write("Se det genererede billede <a target=""_blank"" href=""gen_img.png"">her</a><br>")
            Response.Write("<img src=""gen_img.png"">")
        End If
    End Sub
End Class
Avatar billede bvli Praktikant
18. februar 2008 - 18:15 #1
Kald DrawString med en Rectangle som placering i stedet for kun et pointf.


Pr. default vil den så wrappe inde for det område du har angivet.

/B :)
Avatar billede cold_raider Nybegynder
18. februar 2008 - 19:11 #2
er ikke helt sikker på hvad du mener, kan du give et lille eksempel?
Avatar billede bvli Praktikant
18. februar 2008 - 21:19 #3
Using b As New Bitmap(400, 200)
    Using g As Graphics = Graphics.FromImage(b)
        g.DrawString(SomeLongText, SystemFonts.DefaultFont, Brushes.Black,
                      New Rectangle(Point.Empty, b.Size))
        b.Save("hrmpf.png", ImageFormat.Png)
    End Using
End Using

Her giver jeg en rectangle med, som er størrelsen på bitmap'en.

/B :)
Avatar billede cold_raider Nybegynder
19. februar 2008 - 09:09 #4
jamen det virker jo!
Du er genial! 1000 tak, smid et svar hvis du vil ha point :)
Avatar billede bvli Praktikant
19. februar 2008 - 09:20 #5
Herligt - og svar! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester