kullanılabilir önce iki kez yüklenmesi gerekiyor Bu görüntüyü iki kez yükledikten sonra sadece iki şey yapmak. bunu yaparC# Picturebox.Image ben bu komutla doldurulur bir windows Form PictureBox sahip kod
Positioning.CenterHorizontally(pBProcess, pBProcess.Image.Width);
:
ilk şey
public static void CenterHorizontally(this Control control, int Width)
{
Rectangle parentRect = control.Parent.ClientRectangle;
control.Left = (parentRect.Width - Width)/2;
}
ve ben yapmaya çalışıyorum ikinci şey bir SQLDatabase görüntüyü kurtarmaktır.
cmdLine = "INSERT INTO " + processToSave + " (Picture) VALUES (@Image);";
MemoryStream stream = new MemoryStream();
pBProcess.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
byte[] pic = stream.ToArray();
using (SqlCommand sqlCmd = new SqlCommand(cmdLine, connection))
{
//Parameter definieren
sqlCmd.Parameters.Add("@Image", SqlDbType.Image);
sqlCmd.Parameters["@Image"].Value = pic;
sqlCmd.ExecuteNonQuery();
}
Picturebox.image dosyasını ikinci kez yükledikten sonra her iki eylem de doğru bir şekilde yürütülür.
Bunun nedeni nedir ve nasıl düzeltebilirim?
Düzenleme:
Bu ben resmi kaydetmek istediğiniz tablo oluşturmak nasıl:
//Tabelle wird erstellt und anschließend gefüllt
strInsert = "CREATE TABLE " + processToSave + "(Attributes NVARCHAR(50), Value TINYINT, Picture IMAGE);";
using (SqlCommand sqlCmd = new SqlCommand(strInsert, connection))
{
sqlCmd.ExecuteNonQuery();
}
strInsert = "INSERT INTO " + processToSave + " (Attributes, Value) VALUES (@Attributes, @Value);";
foreach (ListViewItem item in checkedItems)
{
using (SqlCommand sqlCmd = new SqlCommand(strInsert, connection))
{
//Parameter definieren
sqlCmd.Parameters.Add("@Attributes", SqlDbType.NVarChar);
sqlCmd.Parameters["@Attributes"].Value = item.Text;
sqlCmd.Parameters.Add("@Value", SqlDbType.Int);
sqlCmd.Parameters["@Value"].Value = Convert.ToInt32(item.SubItems[1].Text);
sqlCmd.ExecuteNonQuery();
}
}
strInsert = "INSERT INTO " + processToSave + " (Picture) VALUES (@Image);";
MemoryStream stream = new MemoryStream();
pBProcess.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
byte[] pic = stream.ToArray();
using (SqlCommand sqlCmd = new SqlCommand(strInsert, connection))
{
//Parameter definieren
sqlCmd.Parameters.Add("@Image", SqlDbType.Image);
sqlCmd.Parameters["@Image"].Value = pic;
sqlCmd.ExecuteNonQuery();
}
Ve bu DB'den resmini okumak nasıl:
MemoryStream stream = new MemoryStream();
strInsert = "SELECT [Picture] FROM " + processToLoad;
SqlCommand sqlCmd2 = new SqlCommand(strInsert, connection);
byte[] image = (byte[])sqlCmd2.ExecuteScalar();
stream.Write(image, 0, image.Length);
Bitmap bitmap = new Bitmap(stream);
pBProcess.Image = bitmap;
bu çalışmıyor. Bunun için kod DbType Image ile sadece "resmi" var "Bilder" denilen DB bir tablo oluşturmak ve değiştirmek Ama ne zaman:
strInsert = "INSERT INTO Bilder (Picture) VALUES (@Image);";
MemoryStream stream = new MemoryStream();
pBProcess.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
byte[] pic = stream.ToArray();
using (SqlCommand sqlCmd = new SqlCommand(strInsert, connection))
{
//Parameter definieren
sqlCmd.Parameters.Add("@Image", SqlDbType.Image);
sqlCmd.Parameters["@Image"].Value = pic;
sqlCmd.ExecuteNonQuery();
}
...
MemoryStream stream = new MemoryStream();
strInsert = "SELECT [Picture] FROM Bilder";
SqlCommand sqlCmd2 = new SqlCommand(strInsert, connection);
byte[] image = (byte[])sqlCmd2.ExecuteScalar();
stream.Write(image, 0, image.Length);
Bitmap bitmap = new Bitmap(stream);
pBProcess.Image = bitmap;
Aslında çalışır. Orijinal kodumdaki sorun nedir?
UI iş parçacığının dışına yüklenebilir mi? – TaW
Bir combobox – Stef
Hm'nin bir SelectionChangeCommitted Olayı'nın bir parçası, yine de, 'LoadCompleted''in beklemesi yardımcı olabilir mi? – TaW