PDA

View Full Version : ساخت گالری تصاویر در #C از بانک اطلاعات



alirezajokar
یک شنبه 16 مهر 1391, 11:24 صبح
سلام دوستان خواهشمندم یکی به من کمک کنه خیلی خیلی واجبه
من یک دیتابیس دارم که یکی از جداولش فیلد عکس داره حال من باید این عکسها را به صورت گالری مثلا 6*6 در یک فرم نشون بدم و دکمهایی هم برای رفتن به عکسهای بعدی و قبلیها هم باشد .
با چه ابزارهای میتونم این کارو کنم و چگونه ؟

:عصبانی::گریه::گریه:

morteza271
یک شنبه 16 مهر 1391, 11:36 صبح
خوب این که زیاد سخت نیست و نیاز به ابزار خاصی هم نداری!
شما میتونید یک پنل داخل فرمتون بذارین و بعد اینکه عکس ها رو از دیتابیس خوندید آنها را یکی یکی داخل یک کنترل PictureBox قرار دهید و آنها را در داخل پنل قرار دهید .
برای دکمه های بعدی و قبلی هم که خیلی راحت میتونید زیر پنل دکمه ها رو بذارید.
سوالتون خیلی کلیه، شما شروع به کدنویسی کنید هرجاش که به مشکل برخوردین سوالتون رو بپرسین.
موفق باشید

alirezajokar
یک شنبه 16 مهر 1391, 12:04 عصر
متشکرم دوست عزیز
من یک پنل کذاشتم و یک picttureBox هم گذاشتم روش و کد زیر هم برایش نوشتم ولی تنها یک عکس اول به من نشون میده .
میشه بیشتر راهنمایی کنی متشکرم

string strSQL = "SELECT * FROM tblpicper ";
da = new SqlDataAdapter(strSQL, con);
ds = new DataSet();
da.Fill(ds, "tblpicper");
byte[] arrPic = (byte[])(ds.Tables["tblpicper"].Rows[0]["pic_pic"]);
MemoryStream ms = new MemoryStream(arrPic);
pictureBox1.Image = Image.FromStream(ms);

morteza271
یک شنبه 16 مهر 1391, 12:20 عصر
کدتون رو درست ننوشتین باید با یک حلقه PictureBox بسازید و بذارین داخل پنل.
اینطوری :
for (int i = 0; i < dtListImage.Rows.Count; i++)
{
PictureBox pbNew = new PictureBox();
pbNew.Width = 60;
pbNew.Height = 60;

// این خط رو باید اصلاح کنی و تبدلش کنی به تصویر
pbNew.Image = dtListImage.Rows[i]["Image"];
pbNew.SizeMode = PictureBoxSizeMode.StretchImage;

//برای مکانش هم باید تغییراتی بدی مطابق با نیاز خودت
pbNew.Location = new Point((i * 200), 0);
panel1.Controls.Add(pbNew);
}

alirezajokar
یک شنبه 16 مهر 1391, 12:48 عصر
دوست عزیز مرسی از همکاریت خوب بود تا حدودی مشکلم حل شد .
فقط :
dtListImage چیست و چگونه تنظیم میشود ؟
کلیدهای حرکت به صفحه های بعد panle چگونه بگذارم ؟
آیا میشه یک نامی هم واسه عکسها زیرشون نوشت ؟
با تشکر وسپاس

morteza271
یک شنبه 16 مهر 1391, 13:14 عصر
dtListImage رو من به عنوان یک DataTable گرفتم که تصاویر که از دیتابیس خوانده می شوند در آن نگه داشته شوند.یعنی نتیجه اجرای کوئری Select رو در داخل آن قرار می دهیم.
بعد باید به تعداد سطرهایی که در این DataTable وجود داره باید PictureBox بسازیم و در داخل پنل قرار دهیم.

البته اگه شما میخواین صفحه ای درستش کنین.یعنی اینکه کل تصاویر در چند صفحه قرار بگیرن و با کلید های بعدی و قبلی اونها رو پیمایش کنید باید کد رو کمی تغییر بدین.

این فایلی که ضمیمه کرده ام یک نمونه خیلی ساده برای این کاره.
در این مثال من فایل ها رو از کنار برنامه داخل یک فایل Images میخونم و نشون میدم.
یعنی اول برنامه آدرس فایل های پوشه Images رو داخل یک DataTable قرار میدم و بعد با یک تابع هر دفعه 5 تا از عکس ها رو داخل یک پنل نشون میدم.
شما برای تست برنامه تعدادی عکس رو داخل اون پوشه کپی کنید و بعد برنامه رو اجرا کنید.
اگه سوالی بود درخدمتم.
93692

البته این یک مثال خیلی ساده و کوچیکه که شما برای کامل کردنش باید مثلا چک کنید که شماره صفحه مجاز باشه و غیره.
در ضمن شما میتونید همون دیتاتیبلی که من تعریف کردم به جای اینکه از فایلهای کنار برنامه پرش کنید از دیتابیس پرش کنید و کارتون رو انجام بدین.
موفق باشید

alirezajokar
یک شنبه 16 مهر 1391, 14:12 عصر
دوست عزیز واقعا از شما سپاسگذارم خیلی عالی بود متشکرم
برای پنل scrror گذاشتم درست شد
:قلب::تشویق: