PDA

View Full Version : سوال در مورد picture box



abolfazlkh
شنبه 02 مهر 1390, 13:41 عصر
سلام دوستان می خواستم بدانم که چطور می شود وقتی در یک سطر دیتا گرید کلیک میکنم تمام اطلاعات مخصوصا عکسی که داخل دیتا بیس ذخیره شده مجددا برایم داخل picture box نمایش بدهد

modern_amin
شنبه 02 مهر 1390, 13:55 عصر
سلام دوستان می خواستم بدانم که چطور می شود وقتی در یک سطر دیتا گرید کلیک میکنم تمام اطلاعات مخصوصا عکسی که داخل دیتا بیس ذخیره شده مجددا برایم داخل picture box نمایش بدهد


من که نفهمیدم بهتر توضیح بده، اگه میخای عکس بزاری
میتونی سطر دیتاگریدویو رو از نوع عکس تعریف کنی و همونجا عکس مخاطبت رو لود کنی(این مزیت سی شارپ نسبت به رقبایه قدیمی ترش هست)

یا اینکه میتونی یک ستون مخفی در دیتاگرید درست کنی و یک شناسه که فقط مخصوص همون مخاطبه رو اونجا لود کنی. بعد که سطر انتخاب شد اون ستون رو بخونی و براساس اون select بگیری

sara_aryanfar
شنبه 02 مهر 1390, 13:59 عصر
باید ابتدا ایدی اون رو بدست بیاری و بعد با توجه به اون ایدی اطلاعات اون رکورد رو از داخل دیتا بیس بخونی کد زیر کدی هست که من استفاده کردم توضیح خواستی بگو تا برات بگم


private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{

id = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);
string comstring = "select * from addbook where id='"+id+"'";
SqlDataAdapter ff = new SqlDataAdapter(comstring,conobject);
DataSet ds = new DataSet();
conobject.Open();
ff.Fill(ds, "addbook");
conobject.Close();
byte[] arrpic = (byte[])(ds.Tables["addbook"].Rows[0]["poto"]);
MemoryStream ms = new MemoryStream(arrpic);
pictureBox1.Image = Image.FromStream(ms);


}
البته رشته اتصال و شی اتصال قبلا عمومی تعریف شده conobject شی اتصال هست

sara_aryanfar
شنبه 02 مهر 1390, 14:04 عصر
میتونی سطر دیتاگریدویو رو از نوع عکس تعریف کنی و همونجا عکس مخاطبت رو لود کنی(این مزیت سی شارپ نسبت به رقبایه قدیمی ترش هست)

در مورد نوع عکسی که دوستمون گفتند این نوع توصیه نمیشه و به جای این نوع داده از نوع varbinary(MAX) استفاده کنید

modern_amin
شنبه 02 مهر 1390, 14:11 عصر
در مورد نوع عکسی که دوستمون گفتند این نوع توصیه نمیشه و به جای این نوع داده از نوع varbinary(MAX) استفاده کنید

چطور؟ هم زیباست و هم حجمش کمه : اگه دلیل رو بفرمائید ممنون میشم
من دارم رو پروژه ای کار میکنم که این سیستم رو پیاده کردم
4000 تا عکس بهمراه مشخصات مخاطب رو راحت تو گرید باز کردم

sara_aryanfar
شنبه 02 مهر 1390, 14:16 عصر
ظاهرا این نوع داده ای دیگه در نسخه های بعدی sql server پشتیبانی نمیشه در هر حال عکس برای ذخیره باید به حالت باینری دربیاد تا در دیتابیس ذخیره بشه این روش ذخیره عکس تا زمانی مناسب هست که عکسها کم حجم باشن چون ذخیره عکس باعث افزایش حجم دیتابیس میشه از طرفی اگه عکس ها رو در یک پوشه ذخیره و نامشون رو تنها در دیتابیس ذخیره کنیم احتمال پاک شدن عکس ها هست روش بهتر اینه عکس هایی که مهم و حجمشون هم کمه تو دیتا بیس ذخیره بشه مثلا بانک ها امضای مشتریان خود رو به این روش در دیتا بیس ذخیره می کنن

modern_amin
شنبه 02 مهر 1390, 14:22 عصر
بله، حق با شماست
هردو روش مشکلاتی رو دارند

سوالی که تو ذهنمه اینه که برایه باینری کردن زمان هدر نمیره؟؟؟

من پوشه ای تو برنامه ساختم و عکس هام رو از اونجا میخونم
البته موقع ریختن عکس بطور مثال سایز اونرو 40*40 پیکسل میکنم و حجم اونرو پایین میارم

sara_aryanfar
شنبه 02 مهر 1390, 14:31 عصر
گفتم که ریختن عکس در پوشه امنیت رو میاره پائین اما اگه تو دیتابیس بریزی از عکس ها هم حفاظت میشه البته این روش برای عکس های کم حجم مناسب هست .زمان هم نه به اون صورت؟

abolfazlkh
شنبه 02 مهر 1390, 14:32 عصر
من می خواهم که وقتی روی هر سط دیتا گرید کلیک میکنم نام و نام خانوادگی داخل تکسباکس هایم و عکس ذخیره شدهداخل دیتابیسم برایم داخل picture Box نمایش داده بشه نمایش عکس داخل pictureBox رو بلد نیستم ممنونم

sara_aryanfar
شنبه 02 مهر 1390, 14:37 عصر
دوست عزیز شما با دقت به کد نگاه کنی می تونی به راحتی این کار رو انجام بدی در واقع با استفاده از datasetهمون طور که عکس رو داخل پیکچر باکس میزاره فقط کافیه نوه متغییر رو بسته به نیازت تغییر بدی و نام فیلد مرود نظرت رو هم بنویسی منظورم اینه از این خط الگو بگیر

byte[] arrpic = (byte[])(ds.Tables["addbook"].Rows[0]["poto"]);

شفیعی
چهارشنبه 30 آذر 1390, 13:28 عصر
سلام
چطور میشه پیکچر باکس را به بانک وصل کرد
pictureBox1.DataBindings.Add("Image", na,"IconPreview");
دستور بالا جواب نمی دهد 79495

abshar14
چهارشنبه 30 آذر 1390, 15:32 عصر
به نام خدا

سلام
میشه پیکچر باکس رو توسط کلید های جهتی حرکت داد ؟ میخوام عکسم رو با کلید های جهتی حرکت بدم اما نمیدونم چه طوری میشه !
ممنون میشم راهنماییم کنید