Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580

    disegnare una rettangolo su una form

    salve a tutti
    ho trovato molti esempi su msdn
    ma tutti vogliono che il codice sia scritto nell'evengo paint del form

    mentre putroppo a me serve spingere un pulsnte e li' creare un rettangolo
    infatti al seguente codice:
    codice:
     e.Graphics.DrawString("VERTICAL" & vbCrLf & "TEXT", fnt, Brushes.Black, rct1)
    dice che e non è dichiarata
    come posso ovviare al problema?

    grazie
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Nulla vieta di memorizzare l'azione del clic in una struttura dati specifica in modo che, nell'evento OnPaint, il form possa sapere quali rettangoli visualizzare e con quali caratteristiche.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di Kahm
    Registrato dal
    Dec 2004
    residenza
    Rome
    Messaggi
    3,580
    Originariamente inviato da alka
    Nulla vieta di memorizzare l'azione del clic in una struttura dati specifica in modo che, nell'evento OnPaint, il form possa sapere quali rettangoli visualizzare e con quali caratteristiche.
    eh?
    ehm...example please

    non ho capito molto bene
    NN vi diro mai chi sono in realta,
    tutti i miei 3D sono orfani, non insistete per farmi rispondere ai 3D aperti da me

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Intendo dire che eventuali forme grafiche persistenti all'interno di un form devono essere disegnate ogni volta che il sistema operativo lo richiede, quindi anche se tu riuscissi a disegnare una qualsivoglia forma sul form, al successivo refresh (perché il form viene coperto o per altri motivi) perderesti quanto hai disegnato.

    Il suggerimento di usare OnPaint è corretto, in questo caso.

    Se il tuo problema è quello di visualizzare un rettangolo nel punto cliccato, puoi fare in modo che, al clic, si aggiunga in una struttura dati a tuo piacimento le informazioni necessarie per sapere dove piazzare il rettangolo e quali dimensioni attribuirgli, ma il disegno effettivo viene demandato all'esecuzione dell'evento OnPaint che verificherà l'esistenza di queste informazioni e provvederà a disegnare il rettangolo con le caratteristiche richieste, e questo ogni volta che il sistema richiederà al form di disegnare se stesso.

    Ho chiarito i dubbi?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Ecco un esempio di ciò che intendo.

    Questa è una classe costruita al volo relativa ad un Form che illustra quanto ho descritto:

    codice:
    Imports System.Collections
    Imports System.Drawing
    
    Public Class MainForm
    
        Private RectangleList As New ArrayList
    
        Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            MyBase.OnPaint(e)
    
            For Each R As Rectangle In RectangleList
                e.Graphics.DrawRectangle(Pens.DarkBlue, R)
            Next
    
        End Sub
    
        Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
            MyBase.OnMouseDown(e)
    
            Dim R As New Rectangle
            R.X = e.X
            R.Y = e.Y
            R.Height = 100
            R.Width = 200
    
            RectangleList.Add(R)
    
            Me.Invalidate()
    
        End Sub
    
    End Class
    Il resto (funzioni più complesse) vien da sè!

    Ciao!
    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.