در این جلسه قصد داریم آموزش کنترل picture Box در سی شارپ را با مثال و کدنویسی انجام دهیم و همچنین به صورت مختصر با مفهوم کلاس آشنا شویم. برای قرار دادن تصویر در فرم دو راه وجود دارد که هر کدام را توضیح میدهیم.(تذکر:در جلسه اول با محیط ویندوز فرم آشنا شدیم و همچنین کار کردن با دستورات را در آموزش برنامه نویسی تحت کنسول آموزش دادیم)

آموزش کنترل picture Box در سی شارپ

راه اول:

از پنجره ToolBax کنترل Picture Box را انتخاب می کنیم:

انتخاب کنترل Picture Box از پنجره ToolBax

Picture Box دو تا مشخصه ی مهم دارد:

1- خاصیت Image :از طریق این خاصیت می توانیم یک تصویر انتخاب کنیم.

2-خاصیت Size Mode :که اندازه تصویر را تعیین می کند.اگر StretchImage را انتخاب کنیم اندازه تصویر را به اندازه قابی که Picture Box دارد تبدیل می کند.

آشنایی با ابزار picture Box

آشنایی با ابزار picture Box

راه دوم:

می خواهیم برنامه ای بنویسیم که کاربر خودش از یک پوشه دلخواه عکسی را برای قالب Picture Box انتخاب کند.

در اینجا نمی رویم سراغ ToolBox و از آنجا OpenFileDialog را انتخاب کنیم در اینجا می خواهیم با مفهوم کلاس ها بیشتر آشنا شویم.

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

Picture Box

Button

آموزش کنترل picture Box در سی شارپ

ابتدا یک شیء از کلاس OpenFileDialog ایجاد می کنیم.

روش ایجاد کلاس:

کلاس: نقشه نوعی و مشترک گروهی از اشیا است که ویژگی های مشترکی داشته و رفتارهای مشترکی از خود نشان می دهند.

; () نام کلاس  New = نامی که ما به آن اختصاص می دهیم  نام کلاس

نحوه کدنویسی:

public partial class Form1 : Form

{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog Img_Open = new OpenFileDialog();

در اینجا یک شیء از کلاس OpenFileDialog ساختیم//

Img_Open.Filter = “Image File (*.Gif;*.jpg)|*.Gif;*.jpg”;
Img_Open.Title = “بارگذاری تصویر”;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

در اینجا خاصیت StretchImage را در حین کد نویسی بهش دادیم//

if (Img_Open.ShowDialog() == DialogResult.OK)

pictureBox1.Image = Image.FromFile(Img_Open.FileName);
}
}

آموزش کنترل picture Box در سی شارپ

ترفندی با استفاده از کنترل picture Box

ابتدا دو تا Picture Box را روی فرم قرار می دهیم

Picture Box1

1 – در خاصیت Image یک تصویر انتخاب می کنیم.

2 – خاصیت Size Mode : روی StretchImage می گذاریم.

3 – خاصیت Cursor : روی Hand می گذاریم وقتی اشاره گر موس روی کنترل Picture Box رفت اشاره گر موس به شکل دست در می آید.

4 – سایز کنترل Picture Box1 را کوچکتر از سایز کنترل Picture Box2 قرار می دهیم.

Picture Box2

1- در خاصیت Image یک تصویر انتخاب می کنیم.

2-خاصیت Size Mode : روی StretchImage می گذاریم.

3-خاصیت Visible : False

کنترل picture Box در سی شارپ

عکس بزرگ را روی عکس کوچک قرار می دهیم برای اینکه عکس کوچک زیر عکس بزرگی قرار گیرد در نوار ابزار دو گزینه هست به نام های Send to Back و Bring to Front که خاصیت Send to Back را برای عکس کوچکتری در نظر می گیریم.

کنترل picture Box

کنترل picture Box در سی شارپ

برنامه ای بنویسید وقتی اشاره گر موس را روی عکس کوچکتری قرار دادیم عکس بزرگی را به من نشان دهد و به محضی که روی فرم آمد عکس بزرگی مخفی شود

Event ها:

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

pictureBox1 –> MouseMove

Form1  –> MouseMove

نحوه کدنویسی:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
pictureBox2.Visible = true;

}
private void Form1_MouseMove(object sender, MouseEventArgs e)

{
pictureBox2.Visible = false;
}
}

Slide Show

حالا قرار است با هم Slide Show را پیاده سازی کنیم، فرم زیر را طراحی می کنیم:

کنترل picture Box در سی شارپ

  • خاصیت SizeMode کنترل PictureBox برابر StretchImage قرار می دهیم.
  • OpenFileDialog یک مشخصه ای دارد بنام MultiSelect که آن را برابر True قرار می دهم برای اینکه بتوانم چند تا فایل داخل کادر محاورش انتخاب کنیم تا با یک فاصله زمانی مشخص نشان دهد.
  • خاصیت Interval کنترل Timer برابر1000 قرار می دهیم(تایمر در آموزش سیزدهم کامل توضیح دادیم)

نحوه کد نویسی

int incount = 0;

private void btnBrowser_Click(object sender, EventArgs e)

{

openFileDialog1.Filter = “*.jpg|*.jpg”;

if(openFileDialog1 .ShowDialog()==DialogResult.OK)

{

incount = 0;

timer1.Start();
}
}
private void timer1_Tick(object sender, EventArgs e)

{

pictureBox1.Image = Image.FromFile

(openFileDialog1.FileNames[incount]);

FileNames را انتخاب می کنیم چون چند تا عکس قرار داشته باشیم//
Incount یعنی به اولین عکس من اشاره کن Incount برای اولین بار برابر صفر است و همچنین هر یک ثانیه یکبار کدهای تایمر  اجرا می شود Incount را باید اضافه کنیم تا اشاره کند به عکس های بعدی

incount = (incount + 1) % openFileDialog1.FileNames.Length;

//…….

(incount + 1) که قابل قبول هست ولی چرا آمدیم % (باقیمانده) گذاشتیم و گفتیم که بر تعداد فایل هایی که کاربر داخل openFileDialog1 انتخاب کرده است؟

فرض می کنیم کاربر 4 تا عکس انتخاب کرده است (incount + 1) برابر می شود با عدد 5 یعنی عکس پنجمی را نمایش بده ,داخل openFileDialog1 وقتی عکس پنجمی را در خواست می کنیم Error می دهد و از برنامه خارج می شود آمده ایم % گذاشتیم چرا چون به محضی که به 4 برسد تعداد فایل هایی که کاربر داخل openFileDialog1 انتخاب کرده بود 4 تا بوده پس باقیمانده اش صفر می شود و دوباره اشاره می کند به اولین عکسمان

}

شاید یک کاربری دوست ندارد از خاصیت Slide Show استفاده کند و دوست داشته باشد خودش عکس ها را جلو و عقب ببرد پس:

private void btnStart_Stop_Click(object sender, EventArgs e)

{
timer1.Enabled = !timer1.Enabled;

اگر تایمر فعال باشد غیر فعال می کند و اگر غیر فعال بود فعال می کند

}

private void btnFront_Click(object sender, EventArgs e)

{
incount = (incount + 1) % openFileDialog1.FileNames.Length;
pictureBox1.Image = Image.FromFile
(openFileDialog1.FileNames[incount]);
}

private void btnback_Click(object sender, EventArgs e)

{
if(incount>0)
incount = (incount – 1) % openFileDialog1.FileNames.Length;
else
incount = (incount + 1) % openFileDialog1.FileNames.Length;
pictureBox1.Image = Image.FromFile
(openFileDialog1.FileNames[incount]);
}

برنامه را اجرا می کنیم 4 تا عکس انتخاب می کنیم:

کنترل picture Box در سی شارپ

این 4 تا عکس به ترتیب هر یک ثانیه یکبار به صورت اسلاید شو نمایش داده می شوند:

کنترل picture Box در سی شارپ

کنترل picture Box در سی شارپ

کنترل picture Box در سی شارپ

کنترل picture Box در سی شارپ

 

امیدواریم این آموزش مفید بوده باشد. در جلسه بعد با آموزش کاربرد Message Box با ما باشید.