کنترل PictureBox

به وسیله ی کنترل PictureBox می توانید یک تصویر بر روی فرم قرار دهید. کار اصلی این کنترل نمایش دادن یک تصویر است.تمامی کاری که شما باید بکنید این است که عکس مورد نظر خود را انتخاب کنید تا Visual Studio/VCE آنرا به پروژه ی شما وارد کند. شما می توانید از فرمت های گوناگونی مثل Jpeg ،PNG ،BMP ، GIF استفاده کنید.
picture-box-01
در جدول زیر برخی از خواص مفید این کنترل را مشاهده می کنید.

خواص توضیحات
ErrorImage تصویری که در موقع بالا نیامدن عکس مورد نظر به کاربر نمایش داده می شود.
Image عکسی که توسط این کنترل نمایش داده می شود.
ImageLocation مسیر تصویری که توسط PictureBox نمایش داده می شود.
InitialImage تصویری که در هنگام بارگذاری (Load) تصویر اصلی به کاربر نمایش داده می شود.
SizeMode به ما می گوید که تصویر چگونه نمایش داده خواهد شد.این خاصیت مقدار خود را از
System.Windows.Forms.PictureBoxSizeMode می گیرد.
WaitOnLoad وقتی مقدار آن برابر با True باشد ، همه ی کارهای (تراکنش ها) فرم را تا زمانی که تصویر به صورت کامل بارگذاری شود مسدود می کند.

برای نمایش یک تصویر در کنترل PictureBox ، چند روش وجود دارد. شما می توانید به پنجره ی خواص (Properties) رفته و خاصیت Image را پیدا کنید.بر روی دکمه ی سمت راست آن کلیک کرده تا پنجره ی Select Resource باز شود.
در پنجره ی باز شده شما دو انتخاب دارید ، یکی اینکه عکس مورد نظرتان را که در داخل یک درایو (Local resource) موجود است انتخاب کنید و دیگری اینکه عکس را قبلا در داخل فایل پروژه (project’s resouce file) قرار داده اید وارد برنامه کنید.
picture-box-02
هر دوی آنها یک دکمه ی Import دارند که به شما اجازه می دهند که تصویر مورد نظر خود را به فرم اضافه کنید.وقتی که شما تصویر مورد نظر خود را انتخاب کردید، VS/VCE تصویر را به کنترل و یا منابع پروژه (Project Resource File ) اضافه می کند. حال تصویر شما در داخل PictureBox نمایش داده می شود.به یاد داشته باشید که شما می توانید از خاصیت ImageLocation استفاده کنید که از شما مسیر تصویر مورد نظر در داخل هارد را درخواست می کند. همچنین شما می توانید از مسیر یک تصویر که بر روی صفحات وب قرار دارد استفاده کنید. ممکن است نمایش عکس با آن چیزی که شما انتظارش را دارید متفاوت باشد. اگر تصویر بزرگتر از سایز کنترل PictureBox باشد ، فقط قسمتی از آن نمایش داده می شود. شما می توانید از خاصیت SizeMode برای تغییر سایز یا مکان تصویر در داخل کنترل استفاده کنید. این خاصیت از مقادیر شمارشی System.Windows.Forms.PictureBoxSizeMode که در جدول زیر مشاهده می کنید استفاده می کند.

نوع شمارشی
توضیحات
Normal تصویر در قسمت بالا- چپ جای می گیرد ، و اگر تصویر از اندازه ی PictureBox بیشتر باشد ، تصویر برش داده می شود.( فقط قسمتی از آن نمایش داده می شود )
StretchImage سایز تصویر را متناسب با اندازه PictureBox تغییر می دهد و تمام عکس را نمایش می دهد.
AutoSize سایز PictureBox را متناسب با اندازه ی تصویر تغییر می دهد و قسمتی از عکس را نمایش می دهد.
CenterImage تصویر در وسط PictureBox قرار می گیرد. اگر سایز تصویر از سایز PictureBox بیشتر باشد ، تصویر برش داده می شود.( فقط قسمتی از وسط عکس در آن نمایش داده می شود )
Zoom همه عکس را طوری نمایش می دهد که شکل آن در کنترل تغییر نکند مثلا کشیده نشود.

رویداد پیشفرض این کنترل ، رویداد Click است ، و زمانی رخ می دهد که بر روی عکس یا کنترل کلیک شود.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. ghasem110deh پاسخ دادن

    سلام
    یه سوال داشتم … البته اول تشکر میکنم بابت این سایت خوب … کلی چیز یاد گرفتم !
    من عکسم رو تو هنگام اجرای برنامه با استفاده از تابع کی دان (کلیدهای جهت نمای کی بورد) حرکت میدم … چطور بهش بفهمونم تا یه مختصات خاص بیشتر نره یا اگه به یه عکس دیگه (تو فرم) رسید دیگه حرکت نکنه ؟
    در واقع یه بازی ساده ماشین هستش .

    • اسماعیل ابراهیمی پاسخ دادن

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

      لطفاً در تاپیک مربوطه در انجمن مطرح کنید تا پاسختون رو بدیم ، چون اینجا برای درج کد راحت نیستیم

      موفق باشید

  2. س پاسخ دادن

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

  3. Developer0400 پاسخ دادن

    سلام ، منظورتون اینه که PictureBox تمامی عرض و طول فرم رو اشغال کنه ؟ با این فرض باید از خاصیت Dock اون استفاده کنید .
    همچنین خاصیت SizeMode رو روی StretchImage تنظیم کنید .
    سوالات بعدی خودتون رو در بخش فرم سایت بپرسید.متشکرم

    موفق باشید

  4. sara پاسخ دادن

    سلام ممنون از مطالب خوبتون .
    اگه میشه درمورد مشخصه tag هم صحبت کنید . ممنون

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون از لطفتون
      tag شبیه یک متغیر درونى در کنترل است که داده هاى موردنیاز را ذخیره کرده و تا پایان برنامه به صورت
      پایدار نگه داری می کند.

  5. vahid پاسخ دادن

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

    • یونس ابراهیمی پاسخ دادن

      سلام، متوجه سوالتون نشدم، ممنون میشم در بخش انجمن مطرح بفرمایید

  6. mahsa bozorgmehr پاسخ دادن

    سلام.یک سوال داشتم!چجوری زمانی که بک گراند باتن را بر روی پیکچر باکس می اوریم نام عکس مورد نظر هم زیر آن بیاید؟؟؟؟؟

    • یونس ابراهیمی پاسخ دادن

      سلام، اگه فقط نام عکس مد نظرتونه چرا از tooltip استفاده نمی کنید؟ در غیر اینصورت سوالتونو کاملتر و همراه با عکس تو انجمن مطرح بفرمایید ممنون میشم.

  7. حسین پاسخ دادن

    سلام خسته نباشید
    چطور میتونم به تصاویرم لینک بدم
    مثلا با زدن روی تصویر گوگل مرورگر باز بشه و وارد سایت گوگل بشن!؟

    • یونس ابراهیمی پاسخ دادن

      سلام

      private void pictureBox1_Click(object sender, EventArgs e)
      {
          Process.Start("http://www.google.com");
      }
      

      فضای نام زیر رو هم وارد کنید :

      using System.Diagnostics;
  8. بهراد پاسخ دادن

    با سلام خدمت همه دوستان؛ میخواستم یه سوالی بپرسم که ایا میشه یک تصویر را درون یک تصویر دیگر ادغام کرد در برنامه ی سی شارپ؟ یعنی همونکاری ک برای ادغام و ترکیب تصاویر در فتوشاپ انجام میشه همونکار توی سی شارپ عملیاتی هست؟ دقیق تر بگم Double Exposure تو سی شارپ هست؟

  9. محمود پاسخ دادن

    سلام.آقا من وقتی که یک تصویر لایه باز روی PictureBox میزارم اون فضای لایه باز رو در نظر نمیگیره (یعنی اطرافش سفید میشه).لطفا راهنمایی کنید.ممنون

    • وحید باقی پاسخ دادن

      سلام منظورتون از تصویر لایه باز چیه؟
      برای اینکه پشتش شیشه ای بشه باید تصویرتون حتما فرمتش png باشه.

    • ReyNard پاسخ دادن

      بک کالر بیکپر باکس رو هر رنگی خواستی بکن

  10. علی رضا پاسخ دادن

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

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون میشم سوالتونو تو بخش پرسش و پاسخ سایت مطرح بفرمایید

    • محمدرضا پاسخ دادن

      اگه میخوای دقیقاً مث فرم قبلیت فرم جدید درست کنی میتونی این کد رو بنویسی برای مثال
      Form1 f1 = new Form1();
      f1.Show();

  11. ReyNard پاسخ دادن

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

    • یونس ابراهیمی پاسخ دادن

      اول از هر چیز ممنون میشم از این به بعد سوالاتتونو تو بخش پرسش و پاسخ سایت مطرح بفرمایید. دوم، از کنترل openfiledialog واسه این کار به صورت زیر استفاده کنید

      private void button1_Click(object sender, EventArgs e)
      {
          openFileDialog1.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
      
          if (openFileDialog1.ShowDialog() == DialogResult.OK)
          {
              pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
          }
      }
  12. سها پاسخ دادن

    سلام .من یه تصویر رو به عنوان پس زمینه قرار دادم و lable ها و پنلهایی که روش قرار میدم پس زمینه دارند چطور میشه کاری کرد که پس زمینه یlable شیشه ای باشه ؟و فقط نوشته ی داخلش مشخص باشه ؟؟

    • یونس ابراهیمی پاسخ دادن

      سلام، رنگ پس زمینه رو transparent کنید

      label1.BackColor = System.Drawing.Color.Transparent;
  13. cj_mamad پاسخ دادن

    عالی مرسی

    • یونس ابراهیمی پاسخ دادن

      خواهش می کنم، لطف دارین