Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    23

    [c#] muovere un punto all' interno della form

    salve a tutti, devo fare un applicazione che dopo aver disegnato con drawEllipse un punto sulla form, mi dia la possibilità di spostarlo cliccandoci sopra con il mouse e muovendolo... come posso fare??? grazie...

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    secondo me dovresti riscrivere il metodo OnPain del form che ti fornisce l'oggetto graphics,
    da qui aggiungere il punto nella posizione puntata dal mouse in quel detto momento sulla base delle coordinate relative al form e far ridisegnare il form ogni volta che sposti il mouse, ovviamente se il tasto sx ad esempio è giu'.

    quindi diciamo...

    evento tasto sx giu' ---> controllo coordinate mouse relative al form
    se le coordinate sono all'interno dell'area del punto (che avrai memorizzato dalla volta precedente) ----> ridisegni il graphics con il punto con le nuove coordinate. questo finche non ricevi l'evento del tasto del mouse su.

    pero' non garantisco

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    23
    ok ma come faccio a calcolare l area del punto , ovvero a capire che in quel momento il mouse sta cliccando proprio quello specifico punto.. è questo principalmente che non so come fare.

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Buongiorno

    allora... cominciamo con un esempio :

    metti questi campi nella tua classe (che eredita da form)

    codice:
    int initialX = 5;///posizione iniziale coordinata X mouse
    int initialY = 5;///posizione iniziale coordinata Y mouse
    float dimX = 10f;///dimensione iniziale X del punto 
    float dimY = 10f;///dimensione iniziale Y del punto
    fai un override del metodo paint :

    codice:
    protected override void OnPaint(PaintEventArgs e)
            {
                e.Graphics.DrawEllipse(new Pen(Color.Black),initialX,initialY,dimX ,dimY);
                base.OnPaint(e);
            }
    poi aggiungi un evento MouseMove del form e nel metodo scrivi :

    codice:
    private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                ///prendo la posizione del cursore del mouse relativa alla form
                System.Drawing.Point p = this.PointToClient(Cursor.Position);
                ///controllo se il tasto sx del mouse è giu'
                if (e.Button == MouseButtons.Left)
                {     
                    ///stabilisco inizio e fine area del punto           
                    int IareaX = initialX;
                    int FareaX = initialX + Convert.ToInt32(dimX);
                    int IareaY = initialY;
                    int FareaY = initialY + Convert.ToInt32(dimY);
                    ///controllo che il puntatore del mouse sia nell'area del punto
                    /// lasciando un po di margine per evitare l'uscita dall'area con il movimento su 
                    if ((p.X < FareaX +10 && p.X > IareaX-10) && (p.Y < FareaY+10 && p.Y > IareaY-10))
                    {
                        ///imposto la nuova posizione
                        p = this.PointToClient(Cursor.Position);
                        initialX = p.X; 
                        initialY = p.Y; 
                        ///faccio in modo che il form venga ridisegnato
                        this.Invalidate();
                    }
                }
            }

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    23
    ok ora provo grazie mille....

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Originariamente inviato da cala82
    ok ora provo grazie mille....
    figurati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.