PDA

View Full Version : حرفه ای: تغيير عكس در فرم با زدن برروي باتن



PatrisAdmin
شنبه 08 اردیبهشت 1397, 04:57 صبح
با سلام دوستان ميخام يه فرم باشه يه باتن روش باشه كه با ردن هر يك باربرروي باتن عكس زمينه فرم تغيير كنه و اين عكس ها را از يه فولدر خاص بگيره به صورت تصادفي كسي ميتونه كمكم كنه؟؟

PatrisAdmin
شنبه 05 خرداد 1397, 02:06 صبح
واقعا هيچ كدام از مهندسين اين كارا بلد نيستن انجام بدن؟؟؟؟؟؟

pro_gra_mmer_irani
شنبه 05 خرداد 1397, 09:42 صبح
سلام دوست عزیز
خسته نباشید
ببینید شما میتونید برای عوض کردن عکس فرم به صورت زیر عمل بکنید :

///برای وارد کردن عکس از طریق کد شما باید از طریق کلاس ایمیج عمل بکنید..
///ینی باید یک شئی از کلاس ایمیج ایجاد بکیند به شکل زیر
Image [YourNamePic] = Image.FromFile(AddresFile)
///خب در این دستور من از کلاس ایمیج یه متغیر ساختم که از طریق سازنده پیش فرضش بهش یک آدرس عکس میدم
///وحالا میگم اون عکس مقدارش برابر باشه با عکس پس زمینه فرم
/// this.BackgroundImage = [YourNameImage]
///عکس پس زمینه فرم بدین شکل عوض میشه

حالا شما سوال کردی که به صورت تصادفی بره از یک فایل که توش چند عکس وجود داره... میتونید از این روش برید :

///دادن آدرس مسیر عکس ها
string folderName = @"D:\Picutre\Programmer"

///این کلاس دایرکتوری
///برای مسیر دادن و رفتن و ... هست

DirectoryInfo Folder

///وکلاس پایینی برای یک آرایه هست که برای گرفتن اطلاعات
///یک پوشه به کار میره

FileInfo[] Images

///این دستور یک مسیر به اون کلاس
///دایرکتوری اینفو میده
///تا بره اطلاعات درون اون رو بخونه

Folder = new DirectoryInfo(folderName)

///وبعد بهش میگم اون آرایه فایل ابنفو
///مقدارش بشه برابر با اون فولدر
///متد گت فایل که همونطور بهتون گفتم این کلاس متد هایی برای
///گرفتن اجزای درون یک پوشه رو داره
///و به شما به صورت یک مجموعه یا آرایه برمیگردونه

Images = Folder.GetFiles()

///این لیست برای اد زدن
///مسیر اون عکس ها میباشد

List<String> imagesList = new List<String>();


for (int i = 0; i < Images.Length; i++)
{
///حالا بش میگم اون لیست
///رو اد بزن اون پوشه
///به همراه اون آرایه عکس
///اندیس به اندیس
imagesList.Add(String.Format(@"{0}/{1}", folderName, Images[i].Name));
// Console.WriteLine(String.Format(@"{0}/{1}", folderName, Images[i].Name));
}
///بعد با یک رندوم راحت کار رو یک سره میکنم
Random Rn = new Random()
int T = Rn.Next(0, imagesList.Count)
this.BackgroundImage = Image.FromFile(imagesList[T])

امید وارم کارتون راه بیفته دوست عزیز

pro_gra_mmer_irani
شنبه 05 خرداد 1397, 09:44 صبح
سلام دوست عزیز
خسته نباشید
ببینید شما میتونید برای عوض کردن عکس فرم به صورت زیر عمل بکنید :

///برای وارد کردن عکس از طریق کد شما باید از طریق کلاس ایمیج عمل بکنید..
///ینی باید یک شئی از کلاس ایمیج ایجاد بکیند به شکل زیر
Image [YourNamePic] = Image.FromFile(AddresFile)
///خب در این دستور من از کلاس ایمیج یه متغیر ساختم که از طریق سازنده پیش فرضش بهش یک آدرس عکس میدم
///وحالا میگم اون عکس مقدارش برابر باشه با عکس پس زمینه فرم
/// this.BackgroundImage = [YourNameImage]
///عکس پس زمینه فرم بدین شکل عوض میشه

حالا شما سوال کردی که به صورت تصادفی بره از یک فایل که توش چند عکس وجود داره... میتونید از این روش برید :

///دادن آدرس مسیر عکس ها
string folderName = @"D:\Picutre\Programmer"

///این کلاس دایرکتوری اینفو
///برای مسیر دادن و رفتن و ... هست
///در واقع به شما اطلاعات اون پوشه رو میده مثل نام و حجمش و..

DirectoryInfo Folder

///وکلاس پایینی برای یک آرایه هست که برای گرفتن اطلاعات
///یک پوشه به کار میره

FileInfo[] Images

///این دستور یک مسیر به اون کلاس
///دایرکتوری اینفو میده
///تا بره اطلاعات درون اون رو بخونه

Folder = new DirectoryInfo(folderName)

///وبعد بهش میگم اون آرایه فایل ابنفو
///مقدارش بشه برابر با اون فولدر
///متد گت فایل که همونطور بهتون گفتم این کلاس متد هایی برای
///گرفتن اجزای درون یک پوشه رو داره
///و به شما به صورت یک مجموعه یا آرایه برمیگردونه

Images = Folder.GetFiles()

///این لیست برای اد زدن
///مسیر اون عکس ها میباشد

List<String> imagesList = new List<String>();


for (int i = 0; i < Images.Length; i++)
{
///حالا بش میگم اون لیست
///رو اد بزن اون پوشه
///به همراه اون آرایه عکس
///اندیس به اندیس
imagesList.Add(String.Format(@"{0}/{1}", folderName, Images[i].Name));
// Console.WriteLine(String.Format(@"{0}/{1}", folderName, Images[i].Name));
}
///بعد با یک رندوم راحت کار رو یک سره میکنم
Random Rn = new Random()
int T = Rn.Next(0, imagesList.Count)
this.BackgroundImage = Image.FromFile(imagesList[T])

امید وارم کارتون راه بیفته دوست عزیز

mazoolagh
شنبه 05 خرداد 1397, 12:32 عصر
البته اینجا بخش اکسس هست و کدنویسی با VBA انجام میشه و نه C

pro_gra_mmer_irani
یک شنبه 06 خرداد 1397, 00:42 صبح
ولی دوستمون پرسیده که در فرم سی شارپ

PatrisAdmin
جمعه 01 تیر 1397, 07:31 صبح
سلام ممنونم از لطفت منظورم همون اکسس بود

PatrisAdmin
جمعه 04 آبان 1397, 02:39 صبح
درود برشما ممنونم از لطفتون من براي همون vb ميخاستم نه سي شارپ

mazoolagh
شنبه 12 آبان 1397, 13:03 عصر
خب روش آقای زمانی درست هست و پرسش شما در واقع از چند بخش کوچکتر تشکیل شده:
1- خوندن لیست فایلهای یک فولدر و ریختن اونها در یک چیزی (مثلا یک آرایه)
2- ساخت یک عدد صحیح رندوم (برای انتخاب ایندکس آرایه) - احتمالا با شرط غیر تکراری بودن
3- انتساب picture یک image control رو بر اساس ایندکس آرایه

شما در کدوم بخش مشکل دارین؟