PDA

View Full Version : سوال: نمایش عکس در دیتاگرید ویو



hadi-z
جمعه 12 مهر 1392, 02:00 صبح
سلام
من یک تیبل دارم که توش آدرس عکس هر شخص (روی هارد) در رکورد ها ثبت شده.
بعد یه ستون از نوع DataGridViewImageColumn ایجاد کردم (PersonImage) و ستون آدرس رو غیر قابل نمایش کردم
ولی وقتی از کد زیر برای نمایش تصویر توی سلول های دیتاگرید استفاده میکنم هیچ عکسی نیست.

foreach (DataGridViewRow row in dataGridView1.Rows)
{
((DataGridViewImageCell)row.Cells["PersonImage"]).Value = System.Drawing.Image.FromFile(row.Cells["ImageAddress"].Value.ToString());
}

چه کنم؟

Mahmoud.Afrad
جمعه 12 مهر 1392, 02:48 صبح
عکس رو به آرایه ای از بایت ها تبدیل کن و نسبت بده به value سلول:

if (row.Cells["ImageAddress"].Value != null)
{
byte[] b = File.ReadAllBytes(row.Cells["ImageAddress"].Value.ToString());
row.Cells["PersonImage"].Value = b;
}

hadi-z
جمعه 12 مهر 1392, 10:40 صبح
عکس رو به آرایه ای از بایت ها تبدیل کن و نسبت بده به value سلول:

if (row.Cells["ImageAddress"].Value != null)
{
byte[] b = File.ReadAllBytes(row.Cells["ImageAddress"].Value.ToString());
row.Cells["PersonImage"].Value = b;
}


ممنون از راهنماییتون
ولی کار نکرد!!!!

فقط تو یه حالت کار میکنه
اونم با کد زیر:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
PictureBox pb = new PictureBox();
pb.ImageLocation = row.Cells["ImageAddress"].Value.ToString();
try
{
((DataGridViewImageColumn)row.Cells["PersonImage"].OwningColumn).Image = System.Drawing.Image.FromFile(pb.ImageLocation);
}
catch
{ }
}

که مشکل اینم اینه که تمام سلول های عکس موجود در ستون تصویر رو با یک عکس مشابه پر میکنه

shahryari
جمعه 12 مهر 1392, 12:44 عصر
اینو تست
Bitmap bt = new Bitmap(row.Cells["ImageAddress"].Value.ToString());
(DataGridViewImageColumn)row.Cells["PersonImage"].value = bt;

hadi-z
جمعه 12 مهر 1392, 13:49 عصر
اینو تست
Bitmap bt = new Bitmap(row.Cells["ImageAddress"].Value.ToString());
(DataGridViewImageColumn)row.Cells["PersonImage"].value = bt;

این پیغام رو موقع دیباگ میده:

Error 2 'System.Windows.Forms.DataGridViewCell' does not contain a definition for 'value' and no extension method 'value' accepting a first argument of type 'System.Windows.Forms.DataGridViewCell' could be found (are you missing a using directive or an assembly reference?) C:\Users\Hadi\Documents\Visual Studio 2010\Projects\G\Form1.cs 184 57 G

hadi-z
جمعه 12 مهر 1392, 15:47 عصر
یعنی راه حلی وجود نداره؟؟؟؟

shahryari
جمعه 12 مهر 1392, 18:20 عصر
سلام
value اولش را با حرف بزرگ بنویس Value
Bitmap bt = new Bitmap(row.Cells["ImageAddress"].Value.ToString());
(DataGridViewImageColumn)row.Cells["PersonImage"].Value = bt;

FastCode
جمعه 12 مهر 1392, 18:24 عصر
کدی که برای پر کردن Grid استفاده کردید رو بزارید.

Mahmoud.Afrad
جمعه 12 مهر 1392, 18:44 عصر
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells["ImageAddress"].Value != null)
{
row.Cells["PersonImage"].Value = Image.FromFile(row.Cells["ImageAddress"].Value.ToString());
}
}