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

    lampeggiamento punti

    (VB6)

    ciao a tutti
    Con questo posso disegnare un numero di punti a piacere su una picture
    e con con tasto destro li cancello.
    ----------
    Private Sub Form_Load()
    Picture1.DrawWidth = 10
    Picture1.ForeColor = vbRed
    End Sub

    Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
    Picture1.PSet (X, Y)

    End If
    End Sub
    ------------

    questo va bene. Ma io volevo che i punti disegnati lampeggiassero.

    Ho provato con

    Private Sub Timer1_Timer()
    picture1.pset.visible=Not picture1.pset.visible
    End Sub
    ma commetto errore.

    qual'é la giusta sintassi?

    grazie
    melandro

  2. #2
    Mi spieghi questo cosa dovrebbe significare?
    codice:
    picture1.pset.visible=Not picture1.pset.visible
    VVoVe: Un punto non è un oggetto!
    Comunque ti basta sovrascrivere il punto disegnato precedentemente con uno del colore di sfondo, disegnato sempre con PSet (consiglio: non serve modificare la proprietare ForeColor del form per cambiare il colore del punto, basta passare il colore a PSet dopo le coordinate, ad esempio Me.PSet (10,10) vbRed).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    11
    HO capito di dover sostituire (alternativamente) il colore di sfondo.
    Questo deve comunque avvenire sotto il timer?
    Altrimenti non c'é lampeggiamento.

  4. #4
    Certo.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    11
    siamo al punto di partenza
    Non trovo quale formula usare sotto il timer (che non sia visible=not visible)
    Come faccio a far alternare i colori (punto, sfondo)

  6. #6
    codice:
    Option Explicit
    Private Type BlinkingPoint
        x As Single
        y As Single
        blinkOn As Boolean
    End Type
    Private Points() As BlinkingPoint
    
    Private Sub Form_Load()
        Picture1.DrawWidth = 10
        Picture1.ForeColor = vbRed
        ReDim Points(0)
        Timer1.Enabled = False
    End Sub
    
    Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        Dim newPt As BlinkingPoint
        newPt.x = x
        newPt.y = y
        newPt.blinkOn = True
        Picture1.PSet (x, y), Picture1.ForeColor
        If Timer1.Enabled Then
            ReDim Preserve Points(UBound(Points) + 1)
        End If
        Points(UBound(Points)) = newPt
        Timer1.Enabled = True
    End Sub
    
    Private Sub Timer1_Timer()
        Dim counter As Long
        For counter = LBound(Points) To UBound(Points)
            Picture1.PSet (Points(counter).x, Points(counter).y), IIf(Points(counter).blinkOn, Picture1.BackColor, Picture1.ForeColor)
            Points(counter).blinkOn = Not Points(counter).blinkOn
        Next
    End Sub
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    11
    Ti ringrazio, MyItaly.
    Era quello che intendevo e cercavo di ottenere.
    Era veramente un po' seria la faccenda,
    non tanto semplice.


    Grazie infinite.

    melandro

  8. #8
    Be', dai, non è che fosse così tanto difficile!
    Ciao, alla prossima!
    Amaro C++, il gusto pieno dell'undefined behavior.

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.