最初に、preEntities()メソッドは新しいレコードをEntitiesテーブルに挿入します。挿入された値の1つがイメージです。ビジュアルスタジオデータベースのこの列のデータ型は「イメージ」です。c#FromStream(stream)無効なパラメータですか?
loadPanel()メソッドは、テーブル内のすべてのレコード(WHERE TYPE = OBSTACLE)からイメージを取り出し、そのイメージでピクチャボックスを作成することになっています。しかし、FromStream()メソッドにエラーがあります: "INVALID PARAMETER";私はエラーが現れたところにコメントを書いた。私は以前にこのエラーに関する質問が、私は私を助けた:(
private void preEntities() {
string constring = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename="
+ "|DataDirectory|\\DonaldJump.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection con = new SqlConnection(constring);
con.Open();
byte[] image = ImageToByteArray(Properties.Resources.Pipe);
string q = "INSERT INTO dbo.Entities(Name, Type, Image, Width, Height) VALUES('Pipe','Obstacle','" + image + "','97','150')";
SqlCommand cmd = new SqlCommand(q, con);
cmd.ExecuteNonQuery();
}
private byte[] ImageToByteArray(System.Drawing.Image imageIn) {
using (var ms = new MemoryStream()) {
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return ms.ToArray();
}
}
private void loadPanel() {
string constring = "Data Source (LocalDB)\\MSSQLLocalDB;AttachDbFilename="
+ "|DataDirectory|\\DonaldJump.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection con = new SqlConnection(constring);
con.Open();
string q = "SELECT * FROM dbo.Entities WHERE Type='obstacle';";
DataTable dt = new DataTable();
using (var command = new SqlCommand(q, con)) {
using (SqlDataReader dr = command.ExecuteReader()) {
dt.Load(dr);
}
}
foreach (DataRow dr in dt.Rows) {
PictureBox pb = new PictureBox();
pb.Location = new Point(10, 10);
pb.Size = new Size(50, 50);
pb.SizeMode = PictureBoxSizeMode.Zoom;
byte[] img = dr.Field<byte[]>("Image");
MemoryStream mstream = new MemoryStream(img);
pb.Image = Image.FromStream(mstream); //ERROR IS HERE!!!!!!!!!!!!!!!!!!!!!
pb.Name = dr.Field<string>("Name");
pb.Parent = flowLayoutPanel1;
pb.Click += pbClick;
pb.BringToFront();
}
}
あなたがファイルにストリームを保存し、画像ビューアでそれを開こう – Kalten
ありません、どのようにしましたか?私はあなたをするでしょうか?で? –
'File.WriteAllBytes(" path "、img);'。しかし、実際の問題は節約の部分です。 – Kalten