Witam wszystkich! :-)
Mam następujący problem. Tworzę aplikację do rysowania prostych figur geometrycznych z możliwością ich przesuwania. Figury te rysuję na formie pictureBox1. Do narysowania np. prostokąta używam następującego kodu:
public partial class ClsDrawRect : Form
{
Point p1 = Point.Empty;
Point rectPos = new Point(100, 100);
public Form1()
{
InitializeComponent();
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(pictureBox1.Image))
{
g.DrawRectangle(Pens.Black, rectPos.X, rectPos.Y, 100, 100);
}
}
void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(pictureBox1.Image))
{
rectPos.X += e.X - p1.X;
rectPos.Y += e.Y - p1.Y;
g.DrawRectangle(Pens.Black, rectPos.X, rectPos.Y, 100, 100);
}
p1 = e.Location;
}
}
void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
p1 = e.Location;
}
}
Za pomocą tego kodu rysuję i przesuwam narysowany prostokąt. Niestety w momencie gdy wymiar pictureBox1 jest stosunkowo duży aplikacja zaczyna ‘zamulać’. Jest to pewnie związane z rozmiarem Bitmapy.. ma ktoś pomysł jak temu zaradzić? [???]
Z góry dziękuję za pomoc! :-)
Pozdrawiam.
Rafał (bakłażan)
Wiem, że można rysować również rysować na formie panel, ale forma ta nie zachowuje grafiki w momencie gdy aplikacja jest np. minimalizowana..