c#保存图片的问题,求高手;
做的是父子窗口。父窗口代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;...
做的是父子窗口。
父窗口代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace 画图板
{
public partial class fatherForm : Form
{
public fatherForm()
{
InitializeComponent();
}
public static PictureBox p1 = new PictureBox();
private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)
{
saveFileDialog1.Filter = "*.jpg|*.jpg|*.bmp|*.bmp|*.jpeg|*.jpeg|*.gif|*.gif|*.png|*.png|*.ico|*.ico";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
p1.Image.Save(saveFileDialog1.FileName);
}
}
子窗口代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 画图板
{
public partial class ch : Form
{
PictureBox p1 = new PictureBox();
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
fatherForm.p1.Image = pictureBox1.Image;
}
运行没问题,,但是保存的时候就会出现如下错误:
父窗口里面: 展开
父窗口代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace 画图板
{
public partial class fatherForm : Form
{
public fatherForm()
{
InitializeComponent();
}
public static PictureBox p1 = new PictureBox();
private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)
{
saveFileDialog1.Filter = "*.jpg|*.jpg|*.bmp|*.bmp|*.jpeg|*.jpeg|*.gif|*.gif|*.png|*.png|*.ico|*.ico";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
p1.Image.Save(saveFileDialog1.FileName);
}
}
子窗口代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 画图板
{
public partial class ch : Form
{
PictureBox p1 = new PictureBox();
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
fatherForm.p1.Image = pictureBox1.Image;
}
运行没问题,,但是保存的时候就会出现如下错误:
父窗口里面: 展开
展开全部
好像要先把图片图片显示到picturebox中(如果没,可能会出现为空的情况),然后再从picturebox中读取图片位置并且保存。你可以参考我以前做的
public void Read_Image(OpenFileDialog openF, PictureBox MyImage) //显示选择的图片
{
openF.Filter = "*.jpg|*.jpg|*.bmp|*.bmp"; //指定OpenFileDialog控件打开的文件格式
if (openF.ShowDialog() == DialogResult.OK) //如果打开了图片文件
{
try
{
MyImage.Image = System.Drawing.Image.FromFile(openF.FileName); //将图片文件存入到PictureBox控件中
}
catch
{
MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
public void SaveImage(string MID, OpenFileDialog openF)//将图片以二进制存入数据库中
{
string strimg = openF.FileName.ToString(); //记录图片的所在路径
FileStream fs = new FileStream(strimg, FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存
BinaryReader br = new BinaryReader(fs);
byte[] imgBytesIn= br.ReadBytes((int)fs.Length); //将流读入到字节数组中
conn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("update employee_tb Set EmpImage=@Photo where EmpID=" + MID);
SqlCommand cmd = new SqlCommand(strSql.ToString(), conn);
cmd.Parameters.Add("@Photo", SqlDbType.Binary).Value = imgBytesIn;
cmd.ExecuteNonQuery();
conn.Close();
}
将图片显示到picturebox中
private void button1_Click(object sender, EventArgs e)
{
try
{
operate.Read_Image(openFileDialog1, pictureBox1);
}
catch
{
MessageBox.Show("加载图片出错");
}
}
保存图片
operate.SaveImage(this.employeeid_text.Text.Trim(), openFileDialog1);
public void Read_Image(OpenFileDialog openF, PictureBox MyImage) //显示选择的图片
{
openF.Filter = "*.jpg|*.jpg|*.bmp|*.bmp"; //指定OpenFileDialog控件打开的文件格式
if (openF.ShowDialog() == DialogResult.OK) //如果打开了图片文件
{
try
{
MyImage.Image = System.Drawing.Image.FromFile(openF.FileName); //将图片文件存入到PictureBox控件中
}
catch
{
MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
public void SaveImage(string MID, OpenFileDialog openF)//将图片以二进制存入数据库中
{
string strimg = openF.FileName.ToString(); //记录图片的所在路径
FileStream fs = new FileStream(strimg, FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存
BinaryReader br = new BinaryReader(fs);
byte[] imgBytesIn= br.ReadBytes((int)fs.Length); //将流读入到字节数组中
conn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("update employee_tb Set EmpImage=@Photo where EmpID=" + MID);
SqlCommand cmd = new SqlCommand(strSql.ToString(), conn);
cmd.Parameters.Add("@Photo", SqlDbType.Binary).Value = imgBytesIn;
cmd.ExecuteNonQuery();
conn.Close();
}
将图片显示到picturebox中
private void button1_Click(object sender, EventArgs e)
{
try
{
operate.Read_Image(openFileDialog1, pictureBox1);
}
catch
{
MessageBox.Show("加载图片出错");
}
}
保存图片
operate.SaveImage(this.employeeid_text.Text.Trim(), openFileDialog1);
展开全部
说明p1.Image为null了,断点跟踪一下,看看fatherForm.p1.Image = pictureBox1.Image;
这句代码执行了没有?调试时,在即时窗口里输入:fatherForm.p1.Image ==null
看看有没有值
这句代码执行了没有?调试时,在即时窗口里输入:fatherForm.p1.Image ==null
看看有没有值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你用了Ajax没有,如果有的话,把fileupload 单独放在一块 ,不要放在那个Ajax 必需有的控件(我忘记了那个控件的名字)里就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
观察一下p1.Image是否为null估计是Image为实例化引起。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
((PictureBox)fatherForm.Controls[0]).Image
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询