PDA

View Full Version : سوال: محدود کردن حرکت یک کنترل در محدوده کنترل دیگر



mehrnoosh_al62
پنج شنبه 30 مهر 1388, 08:20 صبح
سلام دوستان

چطور میشه حرکت یک کنترل رو محدود کرد؟
من دو PictureBox دارم که یکی بر روی دیگری قرار دارد با سایز کوچکتر.
PicureBox دوم توسط ماوس حرکت میکنه. میخوام کاری کنم که فقط در محدوده PictureBox اول حرکت کنه. ممکنه راهنماییم کنید...

mina.net
پنج شنبه 30 مهر 1388, 10:21 صبح
بجای Picturebox اولی از panel استفاده کن و Picturebox دومی را داخل panel قرار بده در ضمن تو panel هم می تونی عکس لود کنی

mehrnoosh_al62
پنج شنبه 30 مهر 1388, 11:44 صبح
بجای Picturebox اولی از panel استفاده کن و Picturebox دومی را داخل panel قرار بده در ضمن تو panel هم می تونی عکس لود کنی

مرسی از کمکتون
اما Panel هم گذاشتم فرقی نکرده. ببینید منظورم این نیست که عکس از PictureBox اولی خارج میشه. بلکه وقتی عکس رو خارج از محدوده PictureBox اول حرکت میدم بخشی از عکس که خارج از محدوده است زیر فرم پنهان میشه... من میخوام کاری کنم که اصلا خارج ار محدوده حرکت نکنه... عکسش رو گذاشتم که ببینید...

mina.net
پنج شنبه 30 مهر 1388, 12:16 عصر
مرسی از کمکتون
اما Panel هم گذاشتم فرقی نکرده. ببینید منظورم این نیست که عکس از PictureBox اولی خارج میشه. بلکه وقتی عکس رو خارج از محدوده PictureBox اول حرکت میدم بخشی از عکس که خارج از محدوده است زیر فرم پنهان میشه... من میخوام کاری کنم که اصلا خارج ار محدوده حرکت نکنه... عکسش رو گذاشتم که ببینید...

خوب Locationمجاز را مشخص کن و هنگام جابجای عکس در صورتی که خارج از Locationمجاز بود اجازه این کار رو نده.

Navid Asadi
جمعه 01 آبان 1388, 16:15 عصر
من قبلا یه برنامه برای این کار آپ کردم تو پست هام بگرد اگه پیدا نکردی بهم بگو تا برات پیدا کنم...

mehrnoosh_al62
شنبه 02 آبان 1388, 08:27 صبح
خوب Locationمجاز را مشخص کن و هنگام جابجای عکس در صورتی که خارج از Locationمجاز بود اجازه این کار رو نده.


این کار رو انجام دادم ولی کنترل با تاخیر و بد حرکت میکنه. میخوام اگه میشه کنترل دوم رو تو محدوده اولی Lock کنم یا یه چیزی شبیه این...

mina.net
شنبه 02 آبان 1388, 09:45 صبح
این کار رو انجام دادم ولی کنترل با تاخیر و بد حرکت میکنه. میخوام اگه میشه کنترل دوم رو تو محدوده اولی Lock کنم یا یه چیزی شبیه این...
1- شاید کد نویسی شما ایراد داشته باشه.
2- با WPF دست شما برای کارهای گرافیکی باز تر است. البته من خیلی از WPF نمی دونم.
3- و یک پیشنهاد دیگه اگه قراره بارها از این قطعه کد و کنترل استفاده بشه بهتره که یک DLL با کنترل Panel درست کنی که هر کنترلی که توش قرار می گیره دقیقا طبق خواست شما عمل کنه.

mehrnoosh_al62
شنبه 02 آبان 1388, 11:07 صبح
1- شاید کد نویسی شما ایراد داشته باشه.
2- با WPF دست شما برای کارهای گرافیکی باز تر است. البته من خیلی از WPF نمی دونم.
3- و یک پیشنهاد دیگه اگه قراره بارها از این قطعه کد و کنترل استفاده بشه بهتره که یک DLL با کنترل Panel درست کنی که هر کنترلی که توش قرار می گیره دقیقا طبق خواست شما عمل کنه.

ممکمه یه نمونه کد برای تغییر Location برام بذارید...

mina.net
شنبه 02 آبان 1388, 11:27 صبح
PictureBox1.Location = New Point(50, 100)

mehrnoosh_al62
شنبه 02 آبان 1388, 15:30 عصر
PictureBox1.Location = New Point(50, 100)


ممنون ولی منظورم این نبود

ببینید من برای حرکت PictureBox از این کد استفاده میکنم :

Private Sub SeccondPic_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SeccondPic.MouseDown
Offset = New Point(-e.X, -e.Y)
End Sub
Private Sub SeccondPic_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles SeccondPic.MouseMove

If e.Button = Windows.Forms.MouseButtons.Left Then
Dim Pos As Point = Me.PointToClient(MousePosition)
Pos.Offset(Offset.X, Offset.Y)
SeccondPic.Location = Pos
End If

End Sub

حالا وقتی برای مثلا حرکت عرضی یه شرط میذارم درست کار میکنه ولی حرکتش کند و گاهی اوقات با لرزشه..

If e.Location.X >= BackPic.Location.X And e.X < BackPic.Location.X + BackPic.Width Then
Dim Pos As Point = Me.PointToClient(MousePosition)
Pos.Offset(Offset.X, Offset.Y)
SeccondPic.Location = Pos
End If

alimanam
شنبه 02 آبان 1388, 16:24 عصر
با سلام

امیدوارم که با این نمونه کد مشکلتون حل بشه . یا علی
http://img196.imageshack.us/img196/7374/999ts.jpg

mehrnoosh_al62
یک شنبه 03 آبان 1388, 08:19 صبح
با سلام

امیدوارم که با این نمونه کد مشکلتون حل بشه . یا علی
http://img196.imageshack.us/img196/7374/999ts.jpg
ممنون از وقتی که میذارید. اما این کد هم همون مشکل خودمو داره. یعنی با لرزش همراست. وقتی تصویر رو از در کناره های PicBackground حرکت میدیم اثرش باقی میمونه... در ضمن یه وقتایی هم از محدوده PicBackground خارج میشه و زیر فرم پنهان میشه...:لبخندساده:

mina.net
یک شنبه 03 آبان 1388, 08:38 صبح
دوست عزیز سلام
البته خوبه که شما به جزیات توجه داری ولی اینو بدون که حتی تو نرم افزارهای مثل powerpoit ، word و امثال این نیز تصویر لرزشهای داره.
شما نمی تونید لرزش رو کامل از بین ببرید ولی می تونید کم کنید. حرکت تصویر رو با گامهای کوچکتر انجام بدید. احتمالا کم می شه.

mehrnoosh_al62
یک شنبه 03 آبان 1388, 09:25 صبح
دوست عزیز سلام
البته خوبه که شما به جزیات توجه داری ولی اینو بدون که حتی تو نرم افزارهای مثل powerpoit ، word و امثال این نیز تصویر لرزشهای داره.
شما نمی تونید لرزش رو کامل از بین ببرید ولی می تونید کم کنید. حرکت تصویر رو با گامهای کوچکتر انجام بدید. احتمالا کم می شه.

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

mina.net
یک شنبه 03 آبان 1388, 09:49 صبح
به کد دقت نکردم . سوال آیا مطمئن هستی که محاسبات لوکیشن رو درست انجام دادی؟
بهتره محدوده Loction رو کمی کوچیکتر از واقعیت قرار بدی این طوری حداقل 5 پیکسل از لبه کنترل اصلی فکر کنم اینطوری بهتر باشه.