Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41

    Far lampeggiare un punto (vb6)

    Innanzitutto le mie scuse per il titolo strano del topic, ma non ho saputo fare di meglio.

    Ho una picture box
    Ho sopra la picture una image1 contenente una immagine

    Tramite il codice sottostante, premendo sul tasto sinistro
    del mouse, disegno un punto colorato rosso sulla immagine
    contenuta in image1
    Premendo poi con il tasto derstro del mouse, il punto si cancella.

    Uso una image1 solo per poter ridimensionare la immagine con la
    proprietà stretsch. Usando 2 picture non sarebbe possibile. Praticamente il punto rosso viene disegnato sulla picture (visible=false) ma appare per trasparenza sulla image.

    codice:
    Private Sub Form_Load()
    
      Image1.Left = 0
      Image1.Top = 0
      Image1.Width = Picture1.Width
      Image1.Height = Picture1.Height
     
    End Sub
    
    Private Sub image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static Flag As Boolean
    
      If Button = 1 And Flag = False Then     'tasto sinistro disegna un punto sul disegno
        Picture1.FillStyle = 0
        Picture1.FillColor = vbRed
        Picture1.Circle (X, Y), 75, vbRed
        Flag = True
      ElseIf Button = 2 And Flag = True Then  'tasto destro cancella il punto sul disegno'
        Picture1.Cls
        Flag = False
      End If
    
    End Sub
    Il mio quesito:

    Come fare per far si che, quando il punto viene disegnato, lampeggi?
    So che questo si ottiene con un timer. Ho provato con:
    codice:
    Timer1.enabled=true
    Picture1.Circle (X, Y).picture.enabled=not Picture1.Circle.picture.enabled
    ma la sintassi dell'ultimo rigo non é giusta, perché fa errore e non funziona il lampeggiamento.

    come cambiare per far si che lampeggi?

    grazie
    pazienza

  2. #2
    Circle non è un oggetto ma un metodo... :rollo:
    codice:
    Timer1.Enabled=True
    '...
    Private Sub Timer1_Timer()
        Static Flag As Boolean
        If Flag Then
            Picture1.Cls
        Else
            Picture1.FillStyle = 0
            Picture1.FillColor = vbRed
            Picture1.Circle (X, Y), 75, vbRed
        End If
        Flag = Not Flag
    End Sub
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41
    Purtroppo non lampeggia.
    Ho aggiunto anche un commbutton per farlo lampeggiare,
    dopo aver disegnato il punto.

    Ho messo il timer
    l'ho messo su Timer1.enabled=false
    interval su 500

    Tutto il codice é adesso questo:
    codice:
    Private Sub Command1_Click()
    Timer1.Enabled = True
    Flag = Not Flag
    End Sub
    
    Private Sub Form_Load()
    
      Image1.Left = 0
      Image1.Top = 0
      Image1.Width = Picture1.Width
      Image1.Height = Picture1.Height
     
    End Sub
    
    Private Sub image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static Flag As Boolean
    Timer1.Enabled = True
        If Flag Then
            Picture1.Cls
        Else
            Picture1.FillStyle = 0
            Picture1.FillColor = vbRed
            Picture1.Circle (X, Y), 75, vbRed
        End If
        Flag = Not Flag  
      End Sub
    Penso sia un errore (mio ?)di impostazione codice


    pazienza

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Manca tutta la parte relativa al timer ... non l'hai proprio presa in considerazione ...

    Guarda questo

    codice:
    Option Explicit
    
    Dim mX As Single
    Dim mY As Single
    
    Private Sub Form_Load()
    
        With Timer1
            .Enabled = False
            .Interval = 300
        End With
        
        With Image1
            .Left = 0
            .Top = 0
            .Width = Picture1.Width
            .Height = Picture1.Height
        End With
     
        With Picture1
            .FillStyle = 0
            .FillColor = vbRed
        End With
    End Sub
    
    Private Sub image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Static flag As Boolean
        
        If Button = 1 And flag = False Then     'tasto sinistro disegna un punto sul disegno
            mX = X
            mY = Y
            Picture1.Circle (mX, mY), 75, vbRed
            flag = True
            Timer1.Enabled = True
        ElseIf Button = 2 And flag = True Then  'tasto destro cancella il punto sul disegno'
            Timer1.Enabled = False
            Picture1.Cls
            flag = False
        End If
    End Sub
    
    Private Sub Timer1_Timer()
        Static st As Boolean
        
        If st Then
            st = False
            Picture1.Cls
        Else
            Picture1.Circle (mX, mY), 75, vbRed
            st = True
        End If
    End Sub

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41
    Salve Oregon

    Adesso va bene.

    Io avevo inserito il timer, messo su enabled=false poiche ci avevo aggiunto un commbutton per farlo partire. e messo intervallo su 500.

    Comunque adesso funziona a dovere.

    grazie infinite per l'intervento risolutore.

    pazienza

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da pazienza
    Io avevo inserito il timer, messo su enabled=false poiche ci avevo aggiunto un commbutton per farlo partire. e messo intervallo su 500.
    Ma questo non basta ... devi anche inserire il codice nell'evento scatenato dal timer, ovvero in

    Private Sub Timer1_Timer()

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    41
    Vero.

    Distratto forse dal lungo provare, in questi giorni per ottenere il
    lampegiamento.

    In ogni caso adesso é felicemente risolto, grazie a questo forum.

    Grazie. buonasera.

    pazienza

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.