
C#图片保存问题
想在一个PictureBox中读取图片后再进行绘画操作,最后将这副图连带刚才的绘画一起保存下来,但是在保存会报错,我该怎么写?代码如下:privatevoidOpen_C...
想在一个PictureBox中读取图片后再进行绘画操作,最后将这副图连带刚才的绘画一起保存下来,但是在保存会报错,我该怎么写?
代码如下:
private void Open_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
StartPoint.X = e.X;
StartPoint.Y = e.Y;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
CurrentPoint.X = e.X;
CurrentPoint.Y = e.Y;
Point p = new Point(e.X, e.Y);
Graphics g = this.pictureBox1.CreateGraphics();
g.DrawEllipse(new Pen(CurrentColor, 2), StartPoint.X, StartPoint.Y, e.X - StartPoint.X, e.Y - StartPoint.Y);
}
private void Save_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = "D:\\";
saveFileDialog1.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf";
saveFileDialog1.Title = "保存图像";
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
{
string temp = saveFileDialog1.FileName;
pictureBox1.Image.Save(temp);
//这里出错,我该怎么写使其可以达到保存
}
}
如三楼所说,的确pictureBox1.Image为空了.
那我该如何把上面读取的图片,以及上面的Graphics转化成pictureBox1.Image使其可以保存呢?
将private void pictureBox1_MouseUp(object sender, MouseEventArgs e)中的Graphics g = this.pictureBox1.CreateGraphics();换成Graphics g = Graphics.FromImage((Image)bmp);就没有问题了
bmp是新定义的Bitmap,但是这样编译后读出来的图在鼠标点下去后会消失 展开
代码如下:
private void Open_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
StartPoint.X = e.X;
StartPoint.Y = e.Y;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
CurrentPoint.X = e.X;
CurrentPoint.Y = e.Y;
Point p = new Point(e.X, e.Y);
Graphics g = this.pictureBox1.CreateGraphics();
g.DrawEllipse(new Pen(CurrentColor, 2), StartPoint.X, StartPoint.Y, e.X - StartPoint.X, e.Y - StartPoint.Y);
}
private void Save_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = "D:\\";
saveFileDialog1.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf";
saveFileDialog1.Title = "保存图像";
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
{
string temp = saveFileDialog1.FileName;
pictureBox1.Image.Save(temp);
//这里出错,我该怎么写使其可以达到保存
}
}
如三楼所说,的确pictureBox1.Image为空了.
那我该如何把上面读取的图片,以及上面的Graphics转化成pictureBox1.Image使其可以保存呢?
将private void pictureBox1_MouseUp(object sender, MouseEventArgs e)中的Graphics g = this.pictureBox1.CreateGraphics();换成Graphics g = Graphics.FromImage((Image)bmp);就没有问题了
bmp是新定义的Bitmap,但是这样编译后读出来的图在鼠标点下去后会消失 展开
6个回答
展开全部
private void Save_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = "D:\\";
saveFileDialog1.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf";
saveFileDialog1.Title = "保存图像";
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
{
string temp = saveFileDialog1.FileName;
pictureBox1.Image.Save(temp);
//这里出错,我该怎么写使其可以达到保存
}
}
这个测试了没有问题
如果只是这句错的话pictureBox1.Image.Save(temp);
那么可能是pictureBox1.Image是为空的
补充:
private void Open_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
}
这个事件应该写的有问题,只要pictureBox1有东西应该就没问题呀
比如之前加个openFileDialog1.ShowDialog();我测试过了可以的
Graphics g = Graphics.FromImage((Image)bmp);
bmp 已经与pictureBox1没有关系了,pictureBox1还显示什么
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = "D:\\";
saveFileDialog1.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf";
saveFileDialog1.Title = "保存图像";
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
{
string temp = saveFileDialog1.FileName;
pictureBox1.Image.Save(temp);
//这里出错,我该怎么写使其可以达到保存
}
}
这个测试了没有问题
如果只是这句错的话pictureBox1.Image.Save(temp);
那么可能是pictureBox1.Image是为空的
补充:
private void Open_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
}
这个事件应该写的有问题,只要pictureBox1有东西应该就没问题呀
比如之前加个openFileDialog1.ShowDialog();我测试过了可以的
Graphics g = Graphics.FromImage((Image)bmp);
bmp 已经与pictureBox1没有关系了,pictureBox1还显示什么
展开全部
没分,晕倒。加分的话,我再跟你说。不然太没意思了。
你的B/S结构的,还是C/S的。
B/S可以直接用上传控件实现。
C/S更简单。
我给一个代码给你。
System.Windows.Forms.OpenFileDialog
ofdg=new
OpenFileDialog();
ofdg.Filter="Image
Files(*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif";
ofdg.ShowDialog();
if(ofdg.ShowDialog()
==
DialogResult.OK)
{
Stream
stream=ofdg.OpenFile();
int
length=(int)stream.Length;
buff=new
byte[length];
stream.Read(buff,0,length);
this.photo.Image=new
Bitmap(stream);
}
以上代码放在System.Windows.Forms.PictureBox这个控件的Click事件里。
这个控件可以实现选择图片的效果,代码中是把图片读成比特流的格式,然后插入数据中。
其实是一样的,那你就把图片写到盘里面去咯,不过大多C/S程序最好不要写在本地盘里,而是写到服务器盘上,这样用户删掉了就没有了。呵呵。
如果是B/S的写到服务器上是可以的。
你的B/S结构的,还是C/S的。
B/S可以直接用上传控件实现。
C/S更简单。
我给一个代码给你。
System.Windows.Forms.OpenFileDialog
ofdg=new
OpenFileDialog();
ofdg.Filter="Image
Files(*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif";
ofdg.ShowDialog();
if(ofdg.ShowDialog()
==
DialogResult.OK)
{
Stream
stream=ofdg.OpenFile();
int
length=(int)stream.Length;
buff=new
byte[length];
stream.Read(buff,0,length);
this.photo.Image=new
Bitmap(stream);
}
以上代码放在System.Windows.Forms.PictureBox这个控件的Click事件里。
这个控件可以实现选择图片的效果,代码中是把图片读成比特流的格式,然后插入数据中。
其实是一样的,那你就把图片写到盘里面去咯,不过大多C/S程序最好不要写在本地盘里,而是写到服务器盘上,这样用户删掉了就没有了。呵呵。
如果是B/S的写到服务器上是可以的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晕,你Save的路径就是你saveFileDialog读取的路径,
就是说你要把文件存在同一个地方,当然要出错了
你要在save里面写上你要保存的路径
比如Save(@“E:\”+saveFileDialog1.FileName);
就是说你要把文件存在同一个地方,当然要出错了
你要在save里面写上你要保存的路径
比如Save(@“E:\”+saveFileDialog1.FileName);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不太熟,你将pictureBox1.Image.Save(temp)后面的temp先改成固定文件名,比如"c:\\sample.bmp"试试看行不行,如果可以的话,temp中的\是不是要先替换成\\
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要给他一个文件名filename单单只是路径而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询