Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Psaní textu do pictureBoxu

C# .NET .NET (C# a Visual Basic) Psaní textu do pictureBoxu American English version English version

Aktivity (1)
Avatar
Majkel
Člen
Avatar
Majkel:2.2.2015 17:24

Ahoj, potřeboval bych poradit se zápisem textu do pictureBoxu. Mám vytvořený form s pictureBoxem. Mohu si zvolit jeho barvu a následně jeho obsah uložit jako .jpg. Teď bych ale potřeboval funkci, jako je v malování, že si kliknu kamkoli do obrázku (pictureBoxu) a můžu si tam napsat nějaký text a následně uložit jako jpg. Jak zapisovat stringy na bitmapu vím, jen to neumím vykoumat tak nějak elegantně, jak je to například v tom malování.

Díky moc za případné rady.

 
Odpovědět 2.2.2015 17:24
Avatar
rwn
Člen
Avatar
Odpovídá na Majkel
rwn:2.2.2015 19:15

WF je oproti WPF docela omezenej na vytváření složitějších interaktivních věcí, ale tak napadá mě, že bys mohl na kliknutí na to tvoje okno vygenerovat na daném místě TextBox (ten by měl nastavený font, velikost písma, barvu atd. z nějakého menu jak je v malování), uživatel by tam něco napsal a třeba na kliknutí enter by TextBox zmizel a dal by se tam text normálně do pictureBoxu na dané pozici..

Nahoru Odpovědět  +1 2.2.2015 19:15
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Odpovídá na Majkel
Michael Škrášek:2.2.2015 19:40

Takovej náčrt na ten způsob co řekl rwn, rozhodně to není přesně, dál si poraď sám :D

private Font font;
private int x = 0, y = 0;
private string text;
private Color fore;


private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    x = e.X; y = e.Y;
    textBox1.Left = pictureBox1.Left + x;
    textBox1.Top = pictureBox1.Top + y;
    textBox1.Show();
}

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        textBox1.Hide();
        font = textBox1.Font;
        text = textBox1.Text;
        fore = textBox1.ForeColor;

        Graphics gr = pictureBox1.CreateGraphics();
        SolidBrush brush = new SolidBrush(fore);
        gr.DrawString(text, font, brush, x, y);
    }
}
Editováno 2.2.2015 19:41
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět 2.2.2015 19:40
I choose a lazy person to do a hard job. Because a lazy 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 3 zpráv z 3.