Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [VB6] Oggetto opaco

  1. #1

    [VB6] Oggetto opaco

    Ciao ragazzi, mi serve il vostro aiuto, devo poter mettere un "filtro" sopra una picturebox per renderla più scura o più chiara (a seconda dei casi), esiste un oggetto che fa al caso mio? e cioè che può variare di tonalità ma che non nasconde quello che c'è sotto?

    ciao grazie.

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Apri un nuovo progetto, nel form aggiungi 2 picturebox, e il codice sotto.
    In Picture1 metti la tua immagine, poi avvia il progetto.
    Devi 'giocare' sul valore di SourceConstantAlpha (da 0 a 255), esempio:

    .SourceConstantAlpha = 10 <- più scuro
    .SourceConstantAlpha = 128 <- più chiaro


    codice:
    Const AC_SRC_OVER = &H00
    Private Type BLENDFUNCTION
      BlendOp As Byte
      BlendFlags As Byte
      SourceConstantAlpha As Byte
      AlphaFormat As Byte
    End Type
    Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, _
        ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, _
        ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, _
        ByVal lInt As Long, ByVal BLENDFUNCT As Long) As Long
    Private Declare Sub RtlMoveMemory Lib "kernel32.dll" (Destination As Any, _
        Source As Any, ByVal Length As Long)
    
    Private Sub Form_Load()
        Dim BF As BLENDFUNCTION, lBF As Long
    
        Picture1.AutoRedraw = True
        Picture2.AutoRedraw = True
        Picture1.ScaleMode = vbPixels
        Picture2.ScaleMode = vbPixels
        With BF
            .BlendOp = AC_SRC_OVER
            .BlendFlags = 0
            .SourceConstantAlpha = 128
            .AlphaFormat = 0
        End With
    
        RtlMoveMemory lBF, BF, 4
    
        AlphaBlend Picture2.hdc, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight, _
                Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, lBF
    End Sub
    Ciao

  3. #3
    Ciao, grazie mille per l'aiuto l'ho provato però ho 2 problemi:
    il primo è che se schiarisco un paio di volte poi non mi fa più scurire.. non so perchè.
    Il secondo è che io avevo pensato ad una "pellicola" da mettere avanti perchè il mio programma in base al tipo di file che gli viene dato in pasto usa o la "image" per le immagini, la "picturebox con directshow" per i video e lo "shockwaveflash" per i flash ed in pratica avevo bisogno di regolare la luminosità di tutti e 3 i controlli...

    Se hai qualche altra idea te ne sarei grato.

    ciao grazie ancora.

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da roma77roma
    Ciao, grazie mille per l'aiuto l'ho provato però ho 2 problemi:
    il primo è che se schiarisco un paio di volte poi non mi fa più scurire.. non so perchè.
    Perchè ovviamente (!) devi prima ripristinare l'immagine originale, poi scurirla.

    Originariamente inviato da roma77roma
    Il secondo è che io avevo pensato ad una "pellicola" da mettere avanti perchè il mio programma in base al tipo di file che gli viene dato in pasto usa o la "image" per le immagini, la "picturebox con directshow" per i video e lo "shockwaveflash" per i flash ed in pratica avevo bisogno di regolare la luminosità di tutti e 3 i controlli...
    Con i video non puoi farlo.

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    per directshow potresti usare un filtro apposta per fare l'opacizzazione

  6. #6
    Ciao, grazie a tutti per le risposte, alla fine ho risolto applicando un filtro opaco però ho un problema, sui file video questo filtro mi svanisce e ricompare in continuazione facendo un effetto "flash" ogni mezzo secondo e non so da che dipende... quanche idea?

    ciao grazie.

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    come l'hai messo il filtro? e che filtro è?

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.