Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C#]rotazione di un rettangolo in movimento

    Ciao!

    volevo sapere come fare a far ruotare in rettangolo di 90° in movimento.
    Io ho un rettangolo che ogni 3 secondi scende all'interno di una form, vorrei fare in modo che se eseguo l'operazione di rotazione( cliccando su un bottone) questo ruoti sempre in modo corretto, senza spostarsi troppo da dove era prima il rettangolo.
    So che devo usare rotete trasform e translatetrasform.
    Vi faccio vedere come mi viene e come invece vorrei venisse.

    So che il problema è il centro di rotazione.
    Il problema nasce da fatto che non riesco a capire che riferimento prendere come origine della rotazione visto che ogni 3 secondi il pezzo scende.

    grazie in anticipo.
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    difficile aiutarti senza vedere il codice che usi, ma da quello che dici (pare) che tu ruoti tutta la matrice e non il rettangolo.

    parliamo di windows form giusto?

  3. #3
    si si parliamo di windows form

    quello che faccio è che nella funzione associata al timer aggiorno la posizione dell'oggetto con oggetto.updateposition().
    in updateposition faccio

    posi= new Point(pos.X, pos.Y+30)

    per far scendere il pezzo.

    nella funzione Paint, che mi permette di disegnare l'oggetto, invece( che richiamo nell'override di OnPaint della form) faccio

    RotateTrasform(90); // per ruotae di 90°
    TranslateTrasform(this.location.x ,this.location.y)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    455
    Guarda, ho fatto una cosa del genere su XNA ma non so come fare in Windows.Form

    ma ti posso dire che dovresti trovare il centro del rettangolo e ruotarlo.

    in XNA assegnavo il centro del rettangolo ad un Vector2 ma in Windows.Form non saprei proprio come fare..

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    Originariamente inviato da Annasila7
    si si parliamo di windows form

    quello che faccio è che nella funzione associata al timer aggiorno la posizione dell'oggetto con oggetto.updateposition().
    in updateposition faccio

    posi= new Point(pos.X, pos.Y+30)

    per far scendere il pezzo.

    nella funzione Paint, che mi permette di disegnare l'oggetto, invece( che richiamo nell'override di OnPaint della form) faccio

    RotateTrasform(90); // per ruotae di 90°
    TranslateTrasform(this.location.x ,this.location.y)
    non posso dirlo con certezza, ma continua a pensare che tu ruoti TUTTO l'oggetto grafico.

    secondo me fai prima a ridisegnare il rettangolo invertendo h e w

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 © 2025 vBulletin Solutions, Inc. All rights reserved.