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

    [c#] Invalidazione di aree multiple...

    Salve,
    vorrei poter invalidare e quindi ridisegnare aree multiple di un controllo passando un'unica volta per il metodo OnPaint.
    Se scrivo un codice del tipo:

    codice:
    foreach(Rectangle invalidateArea in invalidateAreas)
    {
          this.Invalidate(invalidateArea);
    }
    this.Update();
    Dove ovviamente invalidateAreas è un array di rettangoli, ottengo che vengano "marcate" per l'invalidazione tutte le aree e poi venga eseguito solo un passaggio di pulizia e di ridisegno dello schermo? Oppure mi devo aspettare che il metodo OnPaint venga chiamato ad ogni ciclo del foreach?

    Grazie a tutti.

    Ciao.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Windows ottimizza i messaggi di ridisegno. Ce ne sarà quindi uno solo o il minimo indispensabile.

    Ma per il tuo problema potresti creare una Region fare una singola Invalidate.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    In effetti non avevo considerato la Region, anche se non so bene come funziona.
    Se trasformassi il codice in:

    codice:
    Region invalidateRegion = new Region();
    foreach (Rectangle invalidateArea in invalidateAreas)
    {
         invalidateRegion.Complement(invalidateArea);
    }
    this.Invalidate(invalidateRegion);
    this.Update();
    Otterrei il risultato voluto?

    Grazie mille.

    Ciao.

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