【发布时间】:2011-11-29 01:31:58
【问题描述】:
我在这里遇到的问题有点像 2 部分。
我有一个位于面板内部的图片框。当我打开图像时,图片框的大小会调整为图像的大小,而面板的大小保持不变。该面板只有滚动条可以查看整个图像。
这有两个问题。
当我调整图片框的大小时,由于某种原因,我只能在图片框的前一部分进行绘制。前任。默认情况下,图像框以 200x200 开始。我打开一个 500x400 的图像。而且我仍然只能在图像的 200x200 部分进行绘制。
我遇到的第二个问题是,当我在图片框的那个选择性部分进行绘制时,当我滚动到我的画不在视线范围内的地方,然后再回来时,我画的图像就消失了。我知道我需要某种
picturebox.invalidate()。我只是不知道如何使用它。
这是我的代码,可以很好地掌握我在做什么。
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");
}
}
非常感谢!
【问题讨论】:
标签: c# graphics bitmap panel picturebox