tekst opslaan als image

Status
Niet open voor verdere reacties.

hackie900

Gebruiker
Lid geworden
28 mrt 2009
Berichten
163
weet misschien iemand hoe ik de tekst van een label kan opslaan als een image?
ik heb al een code maar dat is niet wat ik wil. je kunt hem testen dan zul je waarschijnlijk wel zien waarom. code:
Code:
 Dim b As Bitmap = New Bitmap("C:\Temp\Test.jpg")
        Dim g As Graphics = Graphics.FromImage(b)
        g.DrawString("hello world", New Font("Courier", 30, FontStyle.Regular, GraphicsUnit.Pixel), Brushes.Red, 25, 25)

        b.Save("C:\Temp\testout.jpg")

[edit]Ik heb nog een nieuwe code gevonden, maar hoe kan ik de 'Function' laten werken. code:
Code:
    Private Function CreateBitmapImage(ByVal sImageText As String) As Bitmap
        Dim objBmpImage As New Bitmap(1, 1)

        Dim intWidth As Integer = 0
        Dim intHeight As Integer = 0

        Dim objFont As New Font(LabelX1.Font.OriginalFontName, LabelX1.Font.Size, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel)

        Dim objGraphics As Graphics = Graphics.FromImage(objBmpImage)

        intWidth = CInt(objGraphics.MeasureString(sImageText, objFont).Width)
        intHeight = CInt(objGraphics.MeasureString(sImageText, objFont).Height)

        objBmpImage = New Bitmap(objBmpImage, New Size(intWidth, intHeight))

        objGraphics = Graphics.FromImage(objBmpImage)

        objGraphics.Clear(Color.White)
        objGraphics.SmoothingMode = SmoothingMode.AntiAlias
        objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias
        objGraphics.DrawString(sImageText, objFont, New SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0)
        objGraphics.Flush()

        Return (objBmpImage)
    End Function
[/edit]
 
Laatst bewerkt:
Plaats een Button, een TextBox en een Label op je form.

Plaats dan de volgende code:

Code:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Label1.Text = TextBox1.Text

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        CreateBitmapImage(Label1.Text).Save("C:\bla.jpg")

    End Sub

    Private Function CreateBitmapImage(ByVal sImageText As String) As Bitmap
        Dim objBmpImage As New Bitmap(1, 1)

        Dim intWidth As Integer = 0
        Dim intHeight As Integer = 0

        Dim objFont As New Font(Label1.Font.OriginalFontName, Label1.Font.Size, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel)

        Dim objGraphics As Graphics = Graphics.FromImage(objBmpImage)

        intWidth = CInt(objGraphics.MeasureString(sImageText, objFont).Width)
        intHeight = CInt(objGraphics.MeasureString(sImageText, objFont).Height)

        objBmpImage = New Bitmap(objBmpImage, New Size(intWidth, intHeight))

        objGraphics = Graphics.FromImage(objBmpImage)

        objGraphics.Clear(Color.White)
        objGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        objGraphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
        objGraphics.DrawString(sImageText, objFont, New SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0)
        objGraphics.Flush()

        Return (objBmpImage)
    End Function

Wel grappig dat dit kan!
 
hey werkt!!! maar de tekstkleur blijft grijs. het maakt niet uit welke kleur ik doe het blijft grijs. de achtergrond kleur werkt wel. ik denk zelf dat dat aan de 'Function' ligt.
 
Label.Background > Transparant, en dan je Form.Background > Transparant.
 
de background is neit het probleem maar de TEKSTKLEUR.
test zelf maar dan zul je het zien.
 
De tekstkleur word bepaald in deze regel:

Code:
objGraphics.DrawString(sImageText, objFont, New SolidBrush(Color.FromArgb([B]102, 102, 102[/B])), 0, 0)

Het vet gedrukte stuk stellen de RGB (Rood Groen Blauw) waarden voor. 102, 102, 102 staat voor grijs. 255, 0, 0 geeft de tekst een rode kleur.

Je zou gebruik kunnen maken van een ColorDialog om zelf een kleur voor de tekst te kiezen voordat je de tekst als image opslaat.

Je zou ook een combobox kunnen plaatsen met daarin de verschillende opties voor SmoothingMode. Op die manier kun je zelf bepalen hoe de tekst eruit zal gaan zien, zonder dat je steeds je code aanpast.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan