visual multiple selection of objects - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

visual multiple selection of objects


Zeev86

Recommended Posts

היי. אני מנסה לדמות את הסימון של אוביקטים מרובים כמו שיש בחלונות, למשל בשולחן העבודה: כשאני מחזיק את הכפתור השמאלי של העכבר ומתחיל לגרור אותו לאיזשהו כיוון, מופיע ריבוע, וכל האוביקטים שבתוכו מסומנים ועליהם אני יכול לעשות לאחר מכן פעולות.

אני מנסה לתכנת דבר זהה אצלי בתוכנה, אך עם הצלחה חלקית. הצלחתי עד עכשיו לעשות ריבוע, שאותו אני יכול לגרור רק לכיוון אחד. הבעיה מתחילה בזיהוי כיוון שאת החישובים שלו אני מתקשה ליישם. (למשל אם אני מתחיל סימון למעטה זה עובד, אבל כשאני רוצה לשנות כיוון למעלה, אני מקבל שגיאה, כי הגובה והרוחב של ריבוע לא יכול להיות שלילי)

אין לי מושג אפילו איך הנושא הזה נקרא, לכן אשמח אם מישהו יכוון אותי לאיזשהו אתר שבו אני יכול להעזר. תודה מראש!

קישור לתוכן
שתף באתרים אחרים

נניח x1,y1=המיקום בו לחצת על העכבר, x2,y2=המיקום הנוכחי של העכבר.

אז ארבע הפינות של הריבוע הן (x1,y1),(x1,y2),(x2,y1),(x2,y2).

הרוחב והאורך הם הערכים המוחלטים של הפרשי הקואורדינטות.

כל מה שאתה צריך זה להבין איזו מ-4 הנקודות היא הפינה השמאלית העליונה.

קישור לתוכן
שתף באתרים אחרים

הבעיה שלי שאני משתמש באוביקט shape ויש לו רק 2 קואורדינטות במקום 4. המיקום הנוכחי שלו ולאן הוא מגיע (והוא הולך מלמעלה למעטה)

אבל כנראה שאני אלך בדרך שלך (אצטרך לצייר את הריבוע בעצמי)

קישור לתוכן
שתף באתרים אחרים

הצלחתי תודה.

Dim Mdown As Boolean

Dim MdownX As Integer

Dim MdownY As Integer

Private Sub Form_Load()

Shape1.Width = 0

Shape1.Height = 0

Mdown = False

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Shape1.Left = X

Shape1.Top = Y

Shape1.Width = 0

Shape1.Height = 0

MdownX = X

MdownY = Y

Mdown = True

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Mdown = True Then

Shape1.Visible = True

If (X > MdownX) And (Y > MdownY) Then

Shape1.Left = MdownX

Shape1.Top = MdownY

Shape1.Width = X - MdownX

Shape1.Height = Y - MdownY

End If

If (X > MdownX) And (Y < MdownY) Then

Shape1.Left = MdownX

Shape1.Top = Y

Shape1.Width = X - MdownX

Shape1.Height = MdownY - Y

End If

If (X < MdownX) And (Y < MdownY) Then

Shape1.Left = X

Shape1.Top = Y

Shape1.Width = MdownX - X

Shape1.Height = MdownY - Y

End If

If (X < MdownX) And (Y > MdownY) Then

Shape1.Left = X

Shape1.Top = MdownY

Shape1.Width = MdownX - X

Shape1.Height = Y - MdownY

End If

End If

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Mdown = False

Shape1.Visible = False

End Sub

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...