Diskuze: drawString obrázek překrývá text

C# .NET .NET (C# a Visual Basic) drawString obrázek překrývá text American English version English version

Avatar
Michal Huff
Člen
Avatar
Michal Huff:

Ahoj všichni, už asi 2 dny se pokouším vytvořit program ne vytváření velikonočních přání, ale když chcu vypsat nějaký text na obrázek, vždycky mi ho ten obrázek překryje. Zkoušel jsem už asi všechno, ale se stejným výsledkem. Kód:

Sub VygenerovatBtnClick(sender As Object, e As EventArgs)
        If fontSetted = False Then
                MsgBox("Musíš nastavit font!")
        ElseIf imgSetted = False Then
                MsgBox("Musíš nastavit obrázek!!")
        Else
                vygenerovano = True
                obrazek.Image = obrazek.InitialImage
                texty = {textBox1.Text, textBox2.Text, textBox3.Text}

                If comboBox1.SelectedIndex() = 0 Then
                        obrazek.Image = vajco
                ElseIf comboBox1.SelectedIndex() = 1 Then
                        obrazek.Image = zajic
                ElseIf comboBox1.SelectedIndex() = 2 Then
                        obrazek.Image = kure
                ElseIf comboBox1.SelectedIndex() = 3 Then
                        obrazek.Image = pomlazka
                Else
                        MsgBox("někde se vyskytla chyba!")
                        Me.Close()
                End If
                g = obrazek.CreateGraphics

                napis(0, 10, 25)
                napis(1, 10, 25 + font.Height)
                napis(2, 10, 25 + (font.Height*2))
        End If
End Sub

Sub ComboBox1TextChanged(sender As Object, e As EventArgs)
        imgSetted = True
End Sub

Public Sub napis(ByVal cislo As Integer, ByVal x As Single, ByVal y As Single)

        g.DrawString(texty(cislo), font, System.Drawing.Brushes.Black, x, y)

End Sub

Nevíte pls někdo něco?

Odpovědět 22. března 7:58
Než položím hloupou otázku, použiji google.
Avatar
Jack
Člen
Avatar
 
Nahoru Odpovědět 22. března 12:04
Avatar
Michal Huff
Člen
Avatar
Odpovídá na Jack
Michal Huff:

Ty mě asi nechápeš (nic ve zlém). Ten text umím napsat (public sub napis), dokonce tam i je. Ale obrázek mi ho překryje.

Nahoru Odpovědět 22. března 15:11
Než položím hloupou otázku, použiji google.
Avatar
Odpovídá na Michal Huff
Michael Škrášek:

Nevim jestli jsem kod správně pochoil, ale vypadáto že obrázek nastavuješ k Picturebox, misto abys ho vyresloval, mělo by stačit je nvykresli obrázek, nějak takto:

Private img As Image

Sub VygenerovatBtnClick(sender As Object, e As EventArgs)
    If fontSetted = False Then
        MsgBox("Musíš nastavit font!")
    ElseIf imgSetted = False Then
        MsgBox("Musíš nastavit obrázek!!")
    Else
        vygenerovano = True
        obrazek.Image = obrazek.InitialImage
        texty = {textBox1.Text, textBox2.Text, textBox3.Text}

        If comboBox1.SelectedIndex() = 0 Then
            img = vajco
        ElseIf comboBox1.SelectedIndex() = 1 Then
            img = zajic
        ElseIf comboBox1.SelectedIndex() = 2 Then
            img = kure
        ElseIf comboBox1.SelectedIndex() = 3 Then
            img = pomlazka
        Else
            MsgBox("někde se vyskytla chyba!")
            Me.Close()
        End If
        g = obrazek.CreateGraphics

        napis(0, 10, 25)
        napis(1, 10, 25 + Font.Height)
        napis(2, 10, 25 + (Font.Height * 2))
    End If
End Sub

Sub ComboBox1TextChanged(sender As Object, e As EventArgs)
    imgSetted = True
End Sub

Public Sub napis(ByVal cislo As Integer, ByVal x As Single, ByVal y As Single)
    g.DrawImage(img, 0, 0)
    g.DrawString(texty(cislo), Font, System.Drawing.Brushes.Black, x, y)
End Sub
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 22. března 15:31
Proč to dělat složitě, když to jde jednoduše.
Avatar
Michal Huff
Člen
Avatar
Michal Huff:

Díky, funguje to. Akorát se mi zobrazuje jen poslední řádek, ale s tím si už nějak (doufám) dokážu poradit sám :-).

Nahoru Odpovědět 22. března 15:54
Než položím hloupou otázku, použiji google.
Avatar
Michael Škrášek:

Aha, teď jsem si prohlédnul kód dúkladněji ... vykresluješ do obrazku. Trochu bych to změnil:

Private bmp As Bitmap
Sub VygenerovatBtnClick(sender As Object, e As EventArgs)
    If fontSetted = False Then
        MsgBox("Musíš nastavit font!")
    ElseIf imgSetted = False Then
        MsgBox("Musíš nastavit obrázek!!")
    Else
        Dim img As Image
        vygenerovano = True
        texty = {textBox1.Text, textBox2.Text, textBox3.Text}

        If comboBox1.SelectedIndex() = 0 Then
            img = vajco
        ElseIf comboBox1.SelectedIndex() = 1 Then
            img = zajic
        ElseIf comboBox1.SelectedIndex() = 2 Then
            img = kure
        ElseIf comboBox1.SelectedIndex() = 3 Then
            img = pomlazka
        Else
            MsgBox("někde se vyskytla chyba!")
            Me.Close()
        End If

        'nevim jake maj byt velikosti
        bmp = New Bitmap(img.Width, img.Height)
        Dim g = Graphics.FromImage(bmp)

        g.DrawImage(img, 0, 0)

        napis(g, 0, 10, 25)
        napis(g, 1, 10, 25 + Font.Height)
        napis(g, 2, 10, 25 + (Font.Height * 2))

        jmeno_vykreslovaciho_pictureboxu.DrawImage(bmp, 0, 0)
    End If
End Sub

Sub ComboBox1TextChanged(sender As Object, e As EventArgs)
    imgSetted = True
End Sub

Public Sub napis(g As Graphics, ByVal cislo As Integer, ByVal x As Single, ByVal y As Single)
    g.DrawString(texty(cislo), Font, System.Drawing.Brushes.Black, x, y)
End Sub

Ale nevidím celej kód, když to nepomůže, tak ho sem prosim dej :)

Nahoru Odpovědět 22. března 15:54
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Michal Huff
Michael Škrášek:

Aha, už je to vyřešené ... :D každopádně i tak ten kód zkus radši upravit :)

Nahoru Odpovědět 22. března 15:57
Proč to dělat složitě, když to jde jednoduše.
Avatar
Michal Huff
Člen
Avatar
Michal Huff:

A jsme zase u toho. :-( Když chcu obrázek uložit, uloží se mi, ale text na něm není. Odpovězte pls do 20:30!!

Editováno 22. března 20:13
Nahoru Odpovědět 22. března 20:11
Než položím hloupou otázku, použiji google.
Avatar
Odpovídá na Michal Huff
Michael Škrášek:

Příště klikni na odpověď, spoň se spožděním, mělo by stačit, u toho 2. kódu co jsem sem dával jen:

bmp.Save("cesta")
Nahoru Odpovědět 22. března 23:02
Proč to dělat složitě, když to jde jednoduše.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.