Witam,
mam problem z picturebox'em. Do pracy używam tła wczytanego z pliku i dalej rysuję już na picturebox. Chciał bym móc "wyczyścić" to co narysowałem, a zostawić tło wczytane z pliku. Kiedy próbuję kopiować wczytaną bitmapę nie ma efektu wyczyszczenia. Próbowałem wczytywać kolejny raz bitmapę z pliku ale kończy się to wrzucaniem do pamięci kolejnego obrazka i zawalanie pamięci. Po niżej kod programu który także zawala pamięć na co nie mogę pozwolić ponieważ odświeżanie musi się odbywać co około 100ms.
Wczytanie grafiki z pliku:
private void button3_Click(object sender, EventArgs e)
{
DialogResult status = openFileDialog1.ShowDialog();
if (status == DialogResult.OK)
{
sciezkaPlikuGraficznego = openFileDialog1.FileName;
bitmapa = new Bitmap(sciezkaPlikuGraficznego, true);
pictureBox1.Image = bitmapa.Clone() as Image;
pictureBox1.Refresh();
}
}
Rysowanie:
private void button2_Click(object sender, EventArgs e)
{
Graphics g;
Pen p = new Pen(Color.Red);
g = Graphics.FromImage(pictureBox1.Image);
g.DrawEllipse(p, 100, 100, 20, 20);
pictureBox1.Refresh();
}
Czyszczenie picturebox'a:
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = bitmapa.Clone() as Image;
pictureBox1.Refresh();
}