tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
1642
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mili mili ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    5
    Hallo,

    ich habe ein Problem (vb2005)! Ich möchte gerne Rechtecke in eine Form
    zeichnen(kein Problem) aber ---- nun möchte ich eines(Zufällig) an eine
    andere Position schieben (Maus), ein anderes an eine andere usw..
    Habe schon viel über GDI gelesen ------ zwecklos - will nicht rein.

    Wenn es möglich wäre hätte ich gerne einen nachvollziehbaren
    Beispielcode.

    Mit freundl. Grüßen
    Emil
     

  2. #2
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Der Titel ist jetzt nicht gerade optimal gewählt, "Hhhhhhhhhhhhhhhilfe" schreckt sehr ab das Thema zu öffnen.

    Wie sieht denn dein Code soweit aus? Und warum verwendest du nicht die neuste Version von VB?

    Wenn du pictureBoxes verwendest:
    Code csharp:
    1
    
    pictureBox1.Location = Mouse.Location;
     

  3. #3
    mili mili ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    5
    Hallo Cromon,
    zunächst herzlichen Dank für Deine SCHNELLE Antwort "Super".
    Zu Deine Fragen - höhere VS Versionen sind für mich momentan nicht erschwinglich.

    Zum Code:
    habe bisher nur einen Testbutton - Bitmaps auf die Form zeichnen
    und quasi daselbe für Rechtecke.


    Private Sub Button1_click(.....)

    Dim bm as New Bitmap("")
    Dim gr as graphics = graphics.fromHwnd(mybase.Handle)

    gr.translateTransform()
    gr.RotateTransform(45) ---- Test um das Bitmap/Rechteck zu drehen

    gr.drawImage(bm, 100, 100) ---- zeichnen der Bitmap/Rechteck

    end Sub


    ich hoffe Du bist soweit einverstanden?

    mfG
    Emil
     

  4. #4
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Hallo,

    Vorweg mal: Bitte für Code auch immer einen Code-Bereich verwenden
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Private Sub Button1_click(.....)
     
    Dim bm as New Bitmap("")
    Dim gr as graphics = graphics.fromHwnd(mybase.Handle)
     
    gr.translateTransform()
    gr.RotateTransform(45) ---- Test um das Bitmap/Rechteck zu drehen
     
    gr.drawImage(bm, 100, 100) ---- zeichnen der Bitmap/Rechteck
     
    end Sub

    Für Drag&Drop Funktionalität ist folgendes zu implementieren:
    • Im MouseDown Handler des Steuerelements auf dem du zeichnest:
      Abfragen ob die Maus über einem deiner Grafikelemente ist, wenn ja merken über welchem
    • Im MouseMove:
      Wenn im MouseDown ein Steuerelement gemerkt wurde -> dieses um die Mausbewegung verschieben.
    • Im MouseUp:
      Merken des Grafikelements beenden.
     

  5. #5
    mili mili ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    5
    Hallo,

    Danke Dir für dEINE Antwort.

    Ich denke mein Hauptproblem liegt darin zu erkennen wie ein Grafikobject unter der
    Maus erkannt werden soll!
    Bei Steuerelementen ist das kein Problem Sie haben einen eindeutigen Namen z.B.:
    (Button1, Label1 ... x) und konnen problemlos mit (me.Controls(CType(sender, button)...)
    abgefragt bez. identifiziert werden.

    Ich denke ich brauche was das Problem betrifft genaue - nachvollziehbare Erklärungen
    mit script-Beispielen: daß ich es nachvollziehen kann.

    mfg
    Emil
     

  6. #6
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Du musst einfach die Position der einzelnen Graphikelemente irgendwo speichern. Dazu bieten sich die diversen Container von .NET recht gut an.
     

  7. #7
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Für selbst gezeichnete Objekte gibt es keine vorhandene Möglichkeit um sowas zu überprüfen. Das musst du schon selber machen.

    Ich würde mir z.B.: alle Objekte die ich zeichne in einem Array speichern, und dann je nachdem was für Elemente ich gezeichnet habe eine Funktion implementieren die dir sagen kann ob ein Punkt innerhalb eines Objektes liegt.

    Edit:// Wenn du die Objekte rotierst wird das nicht ganz trivial werden.
     

  8. #8
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    Die GraphicsPath-Klasse kann dir da eine Menge Arbeit bezüglich Kollisionsabfrage abnehmen. Mit der IsVisible-Methode kannst du überprüfen ob ein Punkt innerhalb der geometrischen Form liegt, welche durch das GraphicsPath-Objekt definiert wurde.
    Geändert von Shakie (05.08.10 um 01:34 Uhr)
     

  9. #9
    Maxi Tutorials.de Gastzugang
    Ich hatte mal das gleiche problem mit pictureboxen
    ich habe dan eine variable z.B. "auswahl" deffiniert

    und dann bei bicturebox mouse hover? oder so halt wenn die maus überm object ist
    auswahl = object name

    und bei mouse down
    wenn auswahl = object name
    dann: objekt position x = objekt position x + mousepositions änderung x
    objekt position y = objekt position y + mousepositions änderung y


    bei maus überm hintergrund noch
    auswahl = ""


    bin mir net sicher obs hilft

    Ps: änderung = neue position - alte position
    also musst du die alte kennen (variable)
     

Ähnliche Themen

  1. Hintergrund mit Maus verschieben
    Von mxxxx im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 15.04.10, 11:44
  2. Link mit Maus verschieben
    Von hadda im Forum Javascript & Ajax
    Antworten: 15
    Letzter Beitrag: 25.05.08, 19:50
  3. IE7 Streikt: DIV mit Maus verschieben
    Von X-Color im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 10.10.07, 09:34
  4. Form mit Maus verschieben
    Von Meldur im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 09.07.07, 14:25
  5. Butten mit der maus verschieben können
    Von ZeroGirl im Forum Delphi, Kylix, Pascal
    Antworten: 28
    Letzter Beitrag: 02.07.04, 13:19

Stichworte