PDA

View Full Version : سوال: کوچک کردن تصویر و قرار دادن آن در Picture box



honarestani
شنبه 20 خرداد 1391, 11: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, 12:17 عصر
خوب شما می خوای عمل Stretch رو برای پیکچر باکس پیاده کنی یا میخوای عکستو هم اندازه picturebox کنی (یعنی با حفظ نسبت) ؟

honarestani
شنبه 20 خرداد 1391, 12:23 عصر
اولی یعنی Stretch برای picturebox

arenaw
شنبه 20 خرداد 1391, 15: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, 22:14 عصر
یازی به کدنویسی نیست ، به ترتیب زیر عمل کنید:
یک picturebox به اندازه ذلخواه روی فرم قرار داده و تصویری به آن اضافه نکنید. حالا روی همین picturebox یک کنترل image قرار داده و خاصیت Stretch آنرا true و خاصیت enabeld آنرا false قرار دهید(نکته اصلی). هم اکنون تصویر خود را به این image اضافه کنید. حالا شما یک picturebox با تمام ویژگیها و خاصیت Stretch true دارید.


http://barnamenevis.org/images/buttons/reply_40b.png

saber67
سه شنبه 17 بهمن 1391, 22:41 عصر
خاصیت AutoRedraw پیکچر باکس رو True قرار بده
بعد از لود کردن عکس توی پیکچر باکس از کد زیر استفاده کن


Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight

the king
چهارشنبه 18 بهمن 1391, 00: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