نمایش تصویر در ++vc

شروع موضوع توسط javad2493 ‏28 آوریل 2012 در انجمن برنامه‌نویسی C و هم خانواده‌هایش

کلمات کلیدی:
  1. javad2493

    javad2493 Member

    ارسال‌ها:
    87
    تشکر شده:
    71
    امتیاز دستاورد:
    18
    میخوام توی یک پروژه ++VC برحسب یک مقدار خاص یکی از متغیرها(مثلا (if(t=20) یک عکس BMP. رو توی کادر محاوره نمایش بدم. ولی نمیتونم از دستور if استفاده کنم. برنامه از همون اول عکس رو نمایش میده. if رو توی تابع onpaint که کدهای نمایش BMP رو توش نوشتم قرار دادم.

    اگر ممکنه راهنمایی کنید چطوری میتونم این کار رو انجام بدم
    اگر توی کادر محاوره هم نبود نبود مشکلی نیست. هرجای دیگه ای هم نمایش بده مهم نیست.
    فقط پروژه dialog based هستش و MFC App

    اگر تصویر را با کلیک کردن روی یک دکمه هم نمایش بده بازم خوبه ولی فقط دستور شرطی که قبلا گفتم توش رعایت بشه.(اگر کدی دارین که توی تابع دکمه ای که ذکر شد قرار بدیم و با کلیک کردن روی دکمه شکل در یک محل خاص مثلا کادر محاوره نمایش داده بشه باز هم کارم رو راه میندازه)

    با تشکر
    لطفا کدها رو کامل بنویسید و اسم فایل تصویری رو هم مشخص کنید.
     
    نوشته شده توسط javad2493 در ‏28 آوریل 2012
  2. bitaroos

    bitaroos Member

    ارسال‌ها:
    457
    تشکر شده:
    639
    امتیاز دستاورد:
    16
    سلام
    برا اولین بار اومدم تو vc++ کد بنویسم. که برنامم دیباگ نمی شد. میگفت باید ویژوال استدیو 2008 روش نصب باشه.
    من هم با C# برات نوشتم. شرمنده دیگه. اگر بدردت نخورد فحش بده بهم.:eye:

    من با 2 روش این کار رو برات کردم روش اول با استفاده از رخداد paint

    کد (Text):


            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                if (t1 == 20)
                {
                    e.Graphics.DrawImage(ax, pictureBox1.ClientRectangle);
                }
            }

            private void numericUpDown1_ValueChanged(object sender, EventArgs e)
            {
                t1 = (int)numericUpDown1.Value;
                pictureBox1.Invalidate();
            }

     
    توی C# وقتی از رخداد paint استفاده می کنی، باید برای اعمال تغییرات، صفحه رو Refresh یا invalidate کنی

    به نظر من برای کار شما روش دوم (یعنی این زیریه) بهتره، نیازی نیست برید تو رخداد paint

    کد (Text):

            private void numericUpDown2_ValueChanged(object sender, EventArgs e)
            {
                t2 = (int)numericUpDown2.Value;

                if (t2 == 20)
                {
                    pictureBox2.BackgroundImageLayout = ImageLayout.Stretch;
                    pictureBox2.BackgroundImage = ax;
                }
                else
                    pictureBox2.Image = null;
            }
     
    کدهاش رو با C# برات گذاشتم.
     

    پیوست ها:

    • ShowImage.rar
      اندازه فایل:
      کیلوبایت 180.9
      نمایش ها:
      1
    نوشته شده توسط bitaroos در ‏29 آوریل 2012
    javad2493 از این پست تشکر کرده است.
  3. javad2493

    javad2493 Member

    ارسال‌ها:
    87
    تشکر شده:
    71
    امتیاز دستاورد:
    18
    آقا خیلی ممنون
    خیلی حال دادی دمت گرم
     
    نوشته شده توسط javad2493 در ‏29 آوریل 2012
    bitaroos از این پست تشکر کرده است.

به اشتراک بگذارید