Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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

Aktivity
Avatar
Michal Huff
Člen
Avatar
Michal Huff:22.3.2016 7:58

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.3.2016 7:58
Avatar
Jack
Člen
Avatar
Odpovídá na Michal Huff
Jack:22.3.2016 12:04

Ahoj Michale.
Podívej se na tohle:
http://www.vb-helper.com/…re_text.html

 
Nahoru Odpovědět
22.3.2016 12:04
Avatar
Michal Huff
Člen
Avatar
Odpovídá na Jack
Michal Huff:22.3.2016 15:11

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.3.2016 15:11
Avatar
Odpovídá na Michal Huff
Michael Škrášek:22.3.2016 15:31

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
22.3.2016 15:31
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Michal Huff
Člen
Avatar
Michal Huff:22.3.2016 15:54

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.3.2016 15:54
Avatar
Michael Škrášek:22.3.2016 15:54

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.3.2016 15:54
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Odpovídá na Michal Huff
Michael Škrášek:22.3.2016 15:57

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.3.2016 15:57
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
Avatar
Michal Huff
Člen
Avatar
Michal Huff:22.3.2016 20:11

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.3.2016 20:13
 
Nahoru Odpovědět
22.3.2016 20:11
Avatar
Odpovídá na Michal Huff
Michael Škrášek:22.3.2016 23:02

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.3.2016 23:02
"I choose a lazy person to do a hard job. Because that person will find an easy way to do it. " Bill Gates
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.