Avatar
Majkel
Člen
Avatar
Majkel:

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:

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:

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
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 3 zpráv z 3.