View Full Version : سوال: کوچک کردن تصویر و قرار دادن آن در Picture box
  
honarestani
شنبه 20 خرداد 1391, 12:36 عصر
سلام به شما
یک برنامه ای باید بنویسم که عکس های بارگزاری شده رو درون picture box باید نشون بده و چون سایز عکس ها بزرگه خیلی ناجور میشه و از کادر میزنه بیرون .
از streatch image box هم نمیخوام استفاده شه یعنی راهی وجود داره که عکس باز شده کامل درون پیکچر باکس نشون داده بشه و اندازش کوچک باشه؟
اگه میشه لطفا در صورت امکان کمک کنید
با تشکر
این فرم
http://dlhome.persiangig.com/form.png
این کد
http://dlhome.persiangig.com/code.png
این هم سورس
706 بایت
دانلود (http://dlhome.persiangig.com/Form3.zip)
just4froum
شنبه 20 خرداد 1391, 13:17 عصر
خوب شما می خوای عمل Stretch رو برای پیکچر باکس پیاده کنی یا میخوای عکستو هم اندازه picturebox کنی (یعنی با حفظ نسبت) ؟
honarestani
شنبه 20 خرداد 1391, 13:23 عصر
اولی یعنی Stretch برای picturebox
arenaw
شنبه 20 خرداد 1391, 16:47 عصر
سلام
چن بار تصمیم داشتم این کارو کنم ولی هر دفه یادم میرفت 
Dim MyPicture As StdPicture
Set MyPicture = LoadPicture("C:\Users\Amir\Desktop\8_16.jpg")
Picture1.PaintPicture MyPicture, 0, 0, Picture1.Width * 1.76, Picture1.Height * 1.76, 0, 0, MyPicture.Width, MyPicture.Height
البته scalemode فرم روی twip باید باشه بر حسب محاسبات انجام شده :لبخند:(اگه به چیزی دست نزدی نمی خواد کاری کنی)
اون * 1.76 هم هی امتحان کردم تا بدست اومد و دقیقا نمیدونم واسه چیه؟! (کسی میدونه بگه لطفا)
amovahed
سه شنبه 17 بهمن 1391, 23:14 عصر
یازی به کدنویسی نیست ، به ترتیب زیر عمل کنید:
یک picturebox   به اندازه ذلخواه روی فرم قرار داده و تصویری به آن اضافه  نکنید. حالا روی همین picturebox  یک کنترل image  قرار داده و خاصیت  Stretch آنرا true و خاصیت enabeld  آنرا false  قرار دهید(نکته اصلی). هم  اکنون تصویر خود را به این image اضافه کنید. حالا شما یک picturebox  با  تمام ویژگیها و خاصیت    Stretch true دارید. 						 					  					 				 			 			 			 		 	 		 			 			 				 					 					 						 	 		 	
 
                     	           	  	http://barnamenevis.org/images/buttons/reply_40b.png
saber67
سه شنبه 17 بهمن 1391, 23:41 عصر
خاصیت AutoRedraw پیکچر باکس رو True قرار بده
بعد از لود کردن عکس توی پیکچر باکس از کد زیر استفاده کن
Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
the king
چهارشنبه 18 بهمن 1391, 01:06 صبح
سلام به شما
یک برنامه ای باید بنویسم که عکس های بارگزاری شده رو درون picture box باید نشون بده و چون سایز عکس ها بزرگه خیلی ناجور میشه و از کادر میزنه بیرون .
از streatch image box هم نمیخوام استفاده شه یعنی راهی وجود داره که عکس باز شده کامل درون پیکچر باکس نشون داده بشه و اندازش کوچک باشه؟
اگه میشه لطفا در صورت امکان کمک کنید
با تشکر
این فرم
http://dlhome.persiangig.com/form.png
این کد
http://dlhome.persiangig.com/code.png
این هم سورس
706 بایت
دانلود (http://dlhome.persiangig.com/Form3.zip)
اگر نسبت طول به عرض مهم نیست که همونطور که saber67 فرمودند :
Private Sub load_Click()
    Dim pic As StdPicture
    cd.Filter = "JPEG|*.jpg|BITMAP|*.bmp"
    cd.ShowOpen
    Set pic = LoadPicture(cd.FileName)
    With Picture1
        .AutoRedraw = True
        Picture1.PaintPicture pic, 0, 0, .ScaleWidth, .ScaleHeight
    End With
End Sub
 
ولی اگه رعایت کردن نسبت ابعاد اش مهمه و نباید تصویر کشیده (چاق یا لاغر) بشه :
نسبت طول به عرض تصویر رو بدست می آورید (فاکتور) ، بعد بر اساس طول و عرض PictureBox تون مشخصه میشه که کدوم یکی از
این دو حالت مناسب ابعاد اون تصویره :
طول تصویر رو برابر طول PictureBox بگیرید و عرض اش بر حسب اون فاکتور تعیین بشه.
عرض تصویر رو برابر عرض PictureBox بگیرید و طول اش بر حسب اون فاکتور تعیین بشه.
Private Sub load_Click()
    Dim pic As StdPicture
    Dim factor As Single
    cd.Filter = "JPEG|*.jpg|BITMAP|*.bmp"
    cd.ShowOpen
    Set pic = LoadPicture(cd.FileName)
    factor = pic.Width / pic.Height
    With Picture1
        .AutoRedraw = True
        .Cls
        If factor * .ScaleHeight > .ScaleWidth Then
            Picture1.PaintPicture pic, 0, 0, .ScaleWidth, .ScaleWidth / factor
        Else
            Picture1.PaintPicture pic, 0, 0, .ScaleHeight * factor, .ScaleHeight
        End If
    End With
End Sub
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.