الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية عمل حركة خفيفة لفورم مثل ومضة او رعشة

بدأه زهرة الزنبق في 30 سبتمبر 2012 · 15 رد · 805 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيفية عمل حركة خفيفة لفورم مثل ومضة او رعشة على العلم ان حجم الفورم 590*500

وموقعها centerscreen

#2

أضيفي أولاً هذه الدوال ..

    Private Sub ShakeMe(ByVal info As ShakeInfo)
        Dim startTime As Date = Now
        Dim offset As Integer = -1
        Dim workingLeft As Integer = info.InitialLeft

        While Now.Subtract(startTime).TotalSeconds < info.ShakeTimeInSeconds
            workingLeft += offset
            If offset < 0 Then
                If Left <= info.InitialLeft - info.MaxPixelDrift Then
                    offset = 1
                End If
            ElseIf Left >= info.InitialLeft + info.MaxPixelDrift Then
                offset = -1
            End If
            MoveMe(workingLeft)
        End While

        MoveMe(info.InitialLeft)
    End Sub

    Private Sub MoveMe(ByVal toLeft)
        If Me.InvokeRequired Then
            Dim move As New MoveMeDelegate(AddressOf DoMoveMe)
            Me.Invoke(move, toLeft)
        Else
            DoMoveMe(toLeft)
        End If
    End Sub

    Protected Delegate Sub MoveMeDelegate(ByVal toLeft As Integer)

    Protected Sub DoMoveMe(ByVal toLeft As Integer)
        Left = toLeft
    End Sub

    Public Structure ShakeInfo
        Public ShakeTimeInSeconds As Double
        Public MaxPixelDrift As Integer
        Public InitialLeft As Integer
    End Structure

ثم أضيفي زر وأكتب فيه هذا الكود لليقوم بالإهتزاز ..

Dim info As New ShakeInfo
        info.ShakeTimeInSeconds = 1.0
        info.MaxPixelDrift = 5
        info.InitialLeft = Me.Left
        System.Threading.ThreadPool.QueueUserWorkItem(AddressOf ShakeMe, info)

بالنسبة إلى السطر الثاني ShakeTimeInSeconds .. هذا يعني الوقت بالثواني لكي يتم هز الفورم بعدد الثواني التي إخترتيها ..

أما السطر الثالث MaxPixelDrift فهو الحد الأقصى للتحريك الفورم في كل إهتزاز .. أو بشكل مبسط قوة الإهتزاز

تحياتي :happy:

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#3

الكود لا يعمل ويظهر عندي كلمة shakeme في السطر الثالث يوجد تحتها خط

System.Threading.ThreadPool.QueueUserWorkItem(AddressOf ShakeMe, info)

ويظهر هذا ال error

Error 1 Method 'Private Sub ShakeMe(info As chat.chat_form1.ShakeInfo)' does not have the same signature as delegate 'Delegate Sub WaitCallback(state As Object)

#4

ممكن ترفقي مشروعك ..

أو جربي برنامجي ..

تحياتي :happy:

New.rar

تم تعديل هذه المشاركة بواسطة bahbah في 30 سبتمبر 2012 في 11:02

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#5

انا استخدم 2005 vb.net

فهل يوجد اوامر من شأنها ان تعرف

غير

Imports System.Data.SqlClient

تم تعديل هذه المشاركة بواسطة زهرة الزنبق في 30 سبتمبر 2012 في 11:39

#6
زهرة الزنبق كتب:

انا استخدم 2005 vb.net

فهل يوجد اوامر من شأنها ان تعرف

غير

Imports System.Data.SqlClient

أنا لم أقم بتعريف أي شئ خارج الكود القياسي .. ولم أقم بإستيراد مكتبة خارجية ..

تحياتي :happy:

تم تعديل هذه المشاركة بواسطة bahbah في 30 سبتمبر 2012 في 11:56

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#7

لدي مشكلة في رفع الملف في الوقت الحالي

وايضا لا يمكنني قراءة الكود الخاص ببرنامجك لانه مصمم بversion غير الموجودة عندي على الجهاز فالنسخة الموجودة عندي هي

visual basic studio 2005

هي المشكلة متعلقة فقط بالامر shakeme في السطر الاخير من الكود

Dim info As New ShakeInfo info.ShakeTimeInSeconds = 1.0 info.MaxPixelDrift = 5 info.InitialLeft = Me.Left System.Threading.ThreadPool.QueueUserWorkItem(AddressOf ShakeMe, info)

فيوجد تحت الامر خط ازرق لوجود خطا

تم تعديل هذه المشاركة بواسطة زهرة الزنبق في 30 سبتمبر 2012 في 12:28

#8

هذا ملف مرفق

ولك جزيل الشكر اخي الكريم

WindowsApplication1.rar

#9

ارجو تجربة الملف المرفق وارساله لى

ولك جزيل الشكر

#10

ارجو الافادة

#11

لا أظن أن له علاقة بالإصدار القديم أو الجديد .. أنا أعمل على إصدار 2008 ..

ولكن تفضلي الملف المرفق بعد التعديل لقد عدلت على فورم orm1 ..

WindowsApplication1.rar

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#12

يوجد نفس الخطأ عندي في النسخة المعدلة التي ارفقتها والكود لا يعمل عند تشغيل البرنامج ولكن الfile.exe يعمل

ويوجد هذا الخطا في نافذة ال error

Error 1 Method 'Private Sub ShakeMe(info As chat.orm1.ShakeInfo)' does not have the same signature as delegate 'Delegate Sub WaitCallback(state As Object)'. C:\Users\f22\Desktop\WindowsApplication1\WindowsApplication1\orm1.vb 12 65 WindowsApplication1

تم تعديل هذه المشاركة بواسطة زهرة الزنبق في 1 أكتوبر 2012 في 10:12

#13
زهرة الزنبق كتب:

يوجد نفس الخطأ عندي في النسخة المعدلة التي ارفقتها والكود لا يعمل عند تشغيل البرنامج ولكن الfile.exe يعمل

ويوجد هذا الخطا في نافذة ال error

Error 1 Method 'Private Sub ShakeMe(info As chat.orm1.ShakeInfo)' does not have the same signature as delegate 'Delegate Sub WaitCallback(state As Object)'. C:\Users\f22\Desktop\WindowsApplication1\WindowsApplication1\orm1.vb 12 65 WindowsApplication1

إستبدلي السطر الذي باللون الأحمر بهذا السطر ..

ByVal info As ShakeInfo

تحياتي :happy:

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#14

هذا الخطأ موجود في ال error list

والخطأ الذي يوجد تحته خط أزرق في الكود هو

System.Threading.ThreadPool.QueueUserWorkItem(AddressOf ShakeMe, info)

والخط موجود تحت shakeme فماذا يمكنني ان استبدل

على العلم اني مستدعية هذه المكتبة فقط Imports System.Data.SqlClient

فهل يمكنني معرفة المكتبات المستدعاة عندك

#15

هل يمكنك ربط جهازك بجهازي لكي أرى ما المشكلة لأنه لا يوجد لدي الإصدار 2005 .. لأرى المشكلة ..

عبر البرنامج http://www.teamviewer.com/ar/index.aspx

تحياتي :happy:

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#16

بعد التحميل أرجوا وضع الهوية وكلمة السر لكي أستطيع التواصل معك أو أرسليهم على الرسائل الخاصة ..

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…