Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    78

    [C#] Disegnare cerchio

    Ciao a tutti!
    Ho creato un oggetto in c# incaricato di disegnare una linea sulla form principale:

    codice:
    public void DisegnaLinea(Form f)
            {
              
                Graphics gs = f.CreateGraphics();
                Pen pen = new Pen(Color.Green, 10);
                gs.Clear(Color.Black);
                gs.DrawLine(pen, 1, 1, 90, 90);
    
                f.Invalidate();
                
            }
    Il form viene passato come parametro ma non viene disegnato niente. Dove sbaglio?
    Vi ringrazio

  2. #2
    Se fai subito f.Invalidate l'area del form viene ridisegnata immediatamente e viene cancellato quello che ci hai appena disegnato su. I disegni "persistenti" dovrebbero essere fatti nell'evento Paint del form, che viene richiamato quando bisogna ridipingere l'area client del form.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    78
    Ah! Ma io non posso utilizzare la paint del form perchè sono in un'oggetto separato che viene creato dopo. Come posso fare?

  4. #4
    Puoi aggiungere un metodo dell'oggetto in questione tra gli handler dell'evento Paint del form.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    78
    Scusami. Allora io ho l'oggetto Form che è la form principale il quale genere un oggetto dalla classe Sensore. L'oggetto creato dalla classe Sensore dovrebbe disegnare nella form principale una linea.

    Questo codice è presente nella classe Sensore:
    codice:
     public void DisegnaCerchiRosso(Form f)
            {
              
                Graphics gs = f.CreateGraphics();
                Pen pen = new Pen(Color.Green, 10);
                gs.Clear(Color.Black);
                gs.DrawLine(pen, 1, 1, 90, 90);
    
                f.Invalidate();
                
            }
    e come parametro riceve l'istanza della form princiale.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    78
    Originariamente inviato da MItaly
    Puoi aggiungere un metodo dell'oggetto in questione tra gli handler dell'evento Paint del form.
    Come si fà?

  7. #7
    Ma lo scopo di questa classe Sensore serve esclusivamente a disegnare roba sul form? Perché non lo crei come controllo (ereditando da System.Windows.Forms.Control) allora, in modo che abbia una sua area client e disegni lì?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    I linguaggi del .NET Framework hanno un'area dedicata.
    Sposto la discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.