这里是澄清一些事情,我一个小例子(我用这个挣扎了一下太)。
PBOX是Form1上放置一个图片框,使其至少50×
APPPATH从衍生的System.Reflection而是用你喜欢
任何路径有两个按钮,一个用于绘图,一个用于保存,他们的点击事件在下面的代码中。
事情我了解到:
(1)“pBox.Image =”没有做任何事情,但初始化PBOX图像,它并没有成为一个文件名作为每一个例子,我发现使用(保存有问题到同一个文件,因为它被共享锁定)。另外,如果您的目标是在整个控件的表面上看到事物,您可能会希望在初始化时将大小设置为所需的大小。我在这个例子中使用了pBox的大小,但通常我使用位图大小(因为我通常从一个真实的图片文件开始)。 (2)我总是遇到问题,要么看到我的绘图显示在控件上,要么看到我的更改保存在输出文件(或两者)中。在我之前的尝试中,我会在控件和位图上重复绘制。当然,这并不是必须的,但编辑过的位图需要重新加载到control.image中,这是我错过的这个难题。
(A)从control.image创建位图和画上了位图
(B)加载位图到control.Image(所以你可以看到造成平局的变化)
(C)保存control.Image
(2选项)你有一个全球性的(或通过)位图(可能是从一个真实的文件)
(A)画上的位图
(B)加载位图到control.Image(所以你可以看到的变化)
(C)保存位图
public Form1()
{
InitializeComponent();
pBox.Image = new Bitmap(pBox.Width, pBox.Height);
}
private void DrawStuff1_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(pBox.Image);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.Red, 5, 5, 25, 25); //hard-coded size to reduce clutter
pBox.Image = bmp; //this makes your changes visible
}
private void Save_Click(object sender, EventArgs e)
{
pBox.Image.Save(appPath + "SavedImage.bmp");
}
嗨 你能澄清/举个例子? – tguclu 2009-06-30 13:00:18