Pertanyaan yang saya miliki di sini adalah semacam 2 bagian.
Saya memiliki kotak gambar yang diposisikan di dalam panel. Saat saya membuka gambar, kotak gambar diubah ukurannya sesuai ukuran gambar, sedangkan ukuran panel tetap sama. Panel hanya memiliki bilah gulir untuk melihat keseluruhan gambar.
Ada 2 hal yang salah dengan ini.
Ketika saya mengubah ukuran kotak gambar, entah mengapa saya hanya dapat menggambar di bagian kotak gambar sebelumnya. Mantan. Imagebox dimulai secara default dengan ukuran 200x200. Saya membuka gambar berukuran 500x400. Dan saya hanya masih bisa menggambar pada bagian gambar 200x200.
Masalah kedua yang saya alami adalah ketika saya menggambar di bagian selektif kotak gambar, ketika saya menggulir ke tempat lukisan saya tidak terlihat, dan kembali, gambar yang saya lukis hilang. Saya tahu ada semacam
picturebox.invalidate()
yang saya butuhkan. Saya hanya tidak yakin bagaimana cara menggunakannya.
Ini kode saya untuk memahami dengan baik apa yang saya lakukan.
public Form1()
{
InitializeComponent();
DrawArea = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height );
pictureBox1.Image = DrawArea;
objGraphics = this.pictureBox1.CreateGraphics();
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
drawImage(e);
}
public void drawImage(MouseEventArgs e)
{
Rectangle rDraw = new Rectangle();
if (e.Button == MouseButtons.Left)
{
rDraw.X = e.X;
rDraw.Y = e.Y;
rDraw.Width = 3;
rDraw.Height = 3;
objGraphics.DrawEllipse(System.Drawing.Pens.Black, rDraw);
}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.jpg; *.bmp)|*.jpg; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
Bitmap bit = new Bitmap(open.FileName);
pictureBox1.Size = bit.Size;
DrawArea = bit;
pictureBox1.Image = bit;
}
}
catch (Exception)
{
throw new ApplicationException("Failed loading image");
}
}
Terima kasih banyak!