نمایش نتایج 1 تا 18 از 18

نام تاپیک: حرکت دادن عکس در محدوده معین

  1. #1
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    Question حرکت دادن عکس در محدوده معین

    با سلام
    من برای حرکت دادن یک PictureBox از قطعه کد زیر که در رویداد MouseMove آن قرار میدهم استفاده میکنم


     

    Private oControlOffsetPoint As Point
    Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    Dim sX As Integer = RectangleToClient(New Rectangle(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y, 1, 1)).Left - oControlOffsetPoint.X
    Dim sY As Integer = RectangleToClient(New Rectangle(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y, 1, 1)).Top - oControlOffsetPoint.Y
    If e.Button = Windows.Forms.MouseButtons.Left Then
    sender.Location = New Point(sX, sY)
    PictureBox1.Left = sX
    PictureBox1.Top = sY
    EndIf
    End Sub







    دو مشکل دارم
    1- جایگاه نشانگر موس در هنگام حرکت رضایت بخش نیست (اگر مانند حرکت picturebox خود دات نت باشد عالی است)
    2- اینکه اگر بخواهم در محدوده خاص یک PictureBox دیگر آنرا حرکت دهم چه باید بکنم


    راستی PictureBox1.Capture = False چه کار میکند؟
    آخرین ویرایش به وسیله pouyansaraf : سه شنبه 16 آذر 1389 در 15:53 عصر

  2. #2
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

    خوب با این دستور قشنگ تر شد

    موس را وسط عکس متحرک انداختم

    ولی باز مال دات نت قشنگتره

     
    oControlOffsetPoint = New Point(PictureBox1.Width / 2, PictureBox1.Height / 2)

  3. #3
    کاربر دائمی آواتار Alghoochi
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    C:\Windows
    پست
    390

    نقل قول: حرکت دادن عکس در محدوده معین

    نقل قول نوشته شده توسط pouyansaraf مشاهده تاپیک
    با سلام
    من برای حرکت دادن یک PictureBox از قطعه کد زیر که در رویداد MouseMove آن قرار میدهم استفاده میکنم


     

    Private oControlOffsetPoint As Point
    Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    Dim sX As Integer = RectangleToClient(New Rectangle(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y, 1, 1)).Left - oControlOffsetPoint.X
    Dim sY As Integer = RectangleToClient(New Rectangle(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y, 1, 1)).Top - oControlOffsetPoint.Y
    If e.Button = Windows.Forms.MouseButtons.Left Then
    sender.Location = New Point(sX, sY)
    PictureBox1.Left = sX
    PictureBox1.Top = sY
    EndIf
    End Sub







    دو مشکل دارم
    1- جایگاه نشانگر موس در هنگام حرکت رضایت بخش نیست (اگر مانند حرکت picturebox خود دات نت باشد عالی است)
    2- اینکه اگر بخواهم در محدوده خاص یک PictureBox دیگر آنرا حرکت دهم چه باید بکنم


    راستی PictureBox1.Capture = False چه کار میکند؟
    از این کد استفاده کنید. البته کد خود شماست فقط یه سری تغییرات توی اون ایجاد کردم.


    Private Laste As Point
    Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    Laste = e.Location
    Dim _sender = DirectCast(sender, PictureBox)
    If Not _sender.Cursor.Equals(Cursors.SizeAll) Then
    _sender.Cursor = Cursors.SizeAll
    End If
    End Sub
    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    Dim sX As Integer = RectangleToClient(New Rectangle(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y, 1, 1)).Left - Laste.X
    Dim sY As Integer = RectangleToClient(New Rectangle(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y, 1, 1)).Top - Laste.Y
    Dim _sender = DirectCast(sender, PictureBox)
    If e.Button = Windows.Forms.MouseButtons.Left Then
    _sender.Location = New Point(sX, sY)
    End If
    End Sub

    Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    Dim _sender = DirectCast(sender, PictureBox)
    If Not _sender.Cursor.Equals(Cursors.Default) Then
    _sender.Cursor = Cursors.Default
    End If
    End Sub


    ولی کد شما چند ایراد داره:
    1. از متغیر oControlOffsetPoint که اصلا به اون مقدار ندادی استفاده کردی.
    2.مختصات کنترل رو دوبار تغییر دادی. (اول توسط Location و بعد Left و Top)

    مشکل دوم شما رو هم متوجه نشدم. اگه یه توضیحی بدی ممنون می شم.

  4. #4
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

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

    که احتمالا یک شرط باید بگذاریم.
    ولی میخواستم بدونم آیا دستوری هست که ذ=دیگر نیاز به اعمال شرط نباشد
    مانند for each in که خودش چک میکند که متغیر من داخل یک رنج خاصی وجود داشته باشد.

    یک مشکل اساسی دیگر
    عکس قابل حرکت من ترنس پرنت است
    برای اینکه ترنس پرنت اعمال شود در فرم لود برنامه دستور
    PictureBox1.Parent = PictureBox2
    را قرار داده ام
    ولی موقع حرکت دادن آن پس زمینه محدوده عکس متحرک نمیدونم چی بگم آهان (شبیه ارواح در فیلم های سینمایی میشه )


    دوستدار شما صراف
    آخرین ویرایش به وسیله pouyansaraf : چهارشنبه 17 آذر 1389 در 01:58 صبح

  5. #5
    کاربر دائمی آواتار Alghoochi
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    C:\Windows
    پست
    390

    نقل قول: حرکت دادن عکس در محدوده معین

    ولی میخواستم بدونم آیا دستوری هست که ذ=دیگر نیاز به اعمال شرط نباشد
    مانند for each in که خودش چک میکند که متغیر من داخل یک رنج خاصی وجود داشته باشد.
    من نمی دونم. نمی گم نیست فقط من بلد نیستم.

    یک مشکل اساسی دیگر
    عکس قابل حرکت من ترنس پرنت است
    برای اینکه ترنس پرنت اعمال شود در فرم لود برنامه دستور
    PictureBox1.Parent = PictureBox2
    را قرار داده ام
    ولی موقع حرکت دادن آن پس زمینه محدوده عکس متحرک نمیدونم چی بگم آهان (شبیه ارواح در فیلم های سینمایی میشه )
    اگه یه نمونه کد یا عکس بذاری بهتر متوجه میشم. و میتونم کمکت کنم

  6. #6
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

    با سلام

    اگر عکس را با سرعت به این طرف و آنطرف ببرید محدوده پشت ترنس پرنت شده آن گیجی ویلی میره (حالا گیجی ویلی میره یعنی چی جای خود)

    فریم ورک 4 است

    اینم برای دانلود ممنون
    http://www.mediafire.com/?2j65y3euxf9635a
    آخرین ویرایش به وسیله pouyansaraf : چهارشنبه 17 آذر 1389 در 20:23 عصر

  7. #7
    کاربر دائمی آواتار Alghoochi
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    C:\Windows
    پست
    390

    نقل قول: حرکت دادن عکس در محدوده معین

    شرمنده. من فریم ورک 4 ندارم. میشه با 3.5 لینک بدید.

  8. #8
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

    http://www.myfileupload.net/download...45b7e3fb262f53

    با فزیم ورک 3.5

    PictureBox1.Capture = False چه کار میکند؟


    قطعه کد زیر هم برای اینکه عکس logo فقط در محدوده عکس background حرکت کنه که درست نیست. وقتی به لبه بالا و چپ میرسه قفل میکنه (یعنی دیگه شرط برقرار نیست) و لبه راست را نیز رد میکنه

    حالا سرو کله بزنم ببینم چی میشه
    اگر شما هم کمک کنید ممنون


    If
    logo.Location.X + logo.Width < background.Location.X + Width And logo.Location.X > background.Location.X And logo.Location.Y + logo.Height < background.Location.Y + background.Height And logo.Location.Y > background.Location.Y Then
    'Move Logo PictureBox cod
    If e.Button = Windows.Forms.MouseButtons.Left Then
    _sender.Location = NewPoint(sX, sY)
    EndIf
    EndIf
    آخرین ویرایش به وسیله pouyansaraf : چهارشنبه 17 آذر 1389 در 22:16 عصر

  9. #9
    کاربر دائمی آواتار ali_najari
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اصفهان
    سن
    35
    پست
    849

    نقل قول: حرکت دادن عکس در محدوده معین

    دوست عزيز من يه برنامه براتون آماده كردم اميدوارم كه به دردتون بخوره!
    اين رو هم اشاره كنم كه كد بسيار ساده اي داره و علاوه بر اون تصوير رو هم مات نميكنه!

    اين كدهاش هستش و برنامه رو هم Attach ميكنم براتون:

     Dim x, y As Integer

    Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Left Then
    PictureBox1.Cursor = Cursors.SizeAll
    x = e.X
    y = e.Y
    End If
    End Sub

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
    Application.DoEvents()
    PictureBox1.Top = Windows.Forms.Cursor.Position.Y - Me.Top - y
    PictureBox1.Left = Windows.Forms.Cursor.Position.X - Me.Left - x
    End If
    End Sub

    Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    PictureBox1.Cursor = Cursors.Default
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    PictureBox1.Parent = PictureBox2
    PictureBox1.BackColor = Color.Transparent
    End Sub
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله ali_najari : پنج شنبه 18 آذر 1389 در 12:30 عصر

  10. #10
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

    در روش قبلی هم تصویر مات نمیشد

    ولی مشکل من هنوز پابرجاست

    1- پشت زمینه عکس در حال حرکت که ترنس پرنت شده ناموزون که انگار شیشه زیرش است میشود (فقط در حال حرکت سریع)
    2- عکس فقط در محدوده عکس زیری حرکت کند

    کد آقای نجار هم همون مشکلات رو داره


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

  11. #11
    کاربر دائمی آواتار ali_najari
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اصفهان
    سن
    35
    پست
    849

    نقل قول: حرکت دادن عکس در محدوده معین

    منظوزتون از لبه ها بيرون نزنه چيه؟
    يعني نميخوايد از حاشيه يا همون محيط تعيين شده بيرون بره؟

  12. #12
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

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


    If
    logo.Left + logo.Width < backgroundpic.Width And logo.Left > backgroundpic.Left And logo.Top + logo.Height < backgroundpic.Height And logo.Top > backgroundpic.Top Then
    'Move Logo PictureBox cod
    If e.Button = Windows.Forms.MouseButtons.Left Then
    _sender.Location = NewPoint(sX, sY)
    EndIf
    EndIf



    If
    logo.Left <= 0 Then
    logo.Location = NewPoint(1, logo.Location.Y)
    EndIf
    If logo.Top <= 0 Then
    logo.Location = NewPoint(logo.Location.X, 1)
    EndIf
    If logo.Top + logo.Height >= backgroundpic.Height Then
    logo.Location = NewPoint(logo.Location.X, backgroundpic.Height - logo.Height - 1)
    EndIf
    If logo.Left + logo.Width >= backgroundpic.Width Then
    MsgBox("")
    logo.Location =
    NewPoint(backgroundpic.Width - logo.Width - 1, logo.Top)
    EndIf


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

  13. #13
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    Thumbs up نقل قول: حرکت دادن عکس در محدوده معین

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

    نهایتا این برنامه شد که برای دانلود گذاشته ام (فریم ورک 3.5)

    http://www.mediafire.com/?m1skjmg68h4zanm




    ویژگی ها:
    1. پیکچر باکس با نام logo فقط در مساحت پیکچر باکس زیرینش با نام BackgroundPic حرکت میکند
    2. اگر logo به لبه های BackgroundPic رسید با فراخوانی تابع CorectPosition یک پیکسل به سمت داخل Backgroundpic فرستاده میشود تا بازهم برای حرکت آماده باشد و شرط را نقض نکند
    3. به علت اینکه backgroundpic ، مساحت مشخصی ندارد (به علت Anchor و یا Dock) بعد از تغییر سایز فرم نیز تابع corectposition باز هم باید فراخوانی شود
    نقاط ضعف
    1. به علت اینکه logo ترنس پرنت است باید از پیکچر باکس زیرینش خواص بک گراندش را به ارث ببرد که با کد logo.backcolor=backgroundpic این عمل انجام میشود ولی این عمل باعث میشود که پشت زمینه شفاف logo در حال حرکت مقداری ریپ بزند
    از دوستان عزیز که من را راهنمایی کرده اند ممنونم Alghoochi و ali_najari


    (این نقطه ضعف اگر حل شود این شب جمعه ای دعاتون میکنم.)
    آخرین ویرایش به وسیله pouyansaraf : پنج شنبه 18 آذر 1389 در 18:47 عصر

  14. #14
    کاربر دائمی آواتار Alghoochi
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    C:\Windows
    پست
    390

    نقل قول: حرکت دادن عکس در محدوده معین

    دوست عزیز تو این تاپیک mani_rf در مورد مکانیزم transparent توضیح دادن.
    دیدنش خالی از لطف نیست.

    https://barnamenevis.org/showthread.p...=1#post1153974
    آخرین ویرایش به وسیله Alghoochi : جمعه 19 آذر 1389 در 15:11 عصر

  15. #15
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

    mani_rf transparent سرچ زدم همه مشکل transparentداشتن

    فقط یکی مشکل من رو داشت با لینک https://barnamenevis.org/showthread.p...ه-Transparent
    حالا مشکل اینجاست که موقع حرکت PictureBox دوم در لایه Transparent یه لرزشی ایجاد میشه که میخوام این لرزش رو حذف کنم...

    حالا ازش سوال کردم ببینم چی میشه
    دوست عزیز تو این تاپیک mani_rf در مورد مکانیزم transparent توضیح دادن.
    دیدنش خالی از لطف نیست.
    راستی لینک یادتون رفت بدید

  16. #16
    کاربر دائمی آواتار Alghoochi
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    C:\Windows
    پست
    390

    نقل قول: حرکت دادن عکس در محدوده معین

    نقل قول نوشته شده توسط pouyansaraf مشاهده تاپیک
    mani_rf transparent سرچ زدم همه مشکل transparentداشتن

    فقط یکی مشکل من رو داشت با لینک https://barnamenevis.org/showthread.p...ه-Transparent



    حالا ازش سوال کردم ببینم چی میشه

    راستی لینک یادتون رفت بدید
    لینک اضافه شد. عذر می خوام.

  17. #17
    کاربر دائمی آواتار Alghoochi
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    C:\Windows
    پست
    390

    نقل قول: حرکت دادن عکس در محدوده معین

    آخرین فعالیت mehrnoosh_al62 تو تاریخ سه شنبه 09 شهریور 1389 08:44 صبح بوده. فکر نمی کنم اصلا تاپیک شما رو بخونه.

  18. #18
    کاربر دائمی آواتار pouyansaraf
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    بندرانزلی-کرمان-بندرعباس-رشت-منچستر
    سن
    44
    پست
    348

    نقل قول: حرکت دادن عکس در محدوده معین

    سلام

    به قول ارشمیدس یافتم ... یافتم
    الان ساعت 5 صبح.
    اگر doublebuffered فرم را True کنیم مشکل حل میشود.

    البته اگر عکس را خیلی کشیده در حالت زوم بگذاریم باز او حالت پیش میاد ولی اصلا عکس به آن بزرگی نیاز نیست

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •