Modifcare un icona [vb6][santi caltabiano].txt blocco note
1. Modifcare un Icona [VB6][Santi Caltabiano].txt
MODIFICARE UN'ICONA
Supponiamo si voglia modificare un icona a runtime per assegnarla ad un altro
controllo come
ad esempio un Picture o ad un Panel del controllo Status Bar o ad una Tab del
controllo SSTAB.
In questo esempio ad un icona verrà sovrapposto il numero 23 racchiuso in un
qudratino rotto (per
ottenere l'effetto notifica di FaceBook).
L'idea è semplice:
1) Un picture sorgente contenente una label con sfondo rosso
2) Si carica l'immagine nella picture sorgente
3) Si copia il risultato in una picture di destinazione susando la funzione
BitBlt.
PROCEDIMENTO:
1) Si crea un progetto con un form
2) Ai Aggiungono i controlli
- Picture: name=picSrc, Visible=False, AutoRedraw=False, Height=200
- Picture: name=picDes, Visible=False, AutoRedraw=True, Height=200
- Label: name=lbl, autoSize=True, backcolor=vbred; Font a 7pt
- Command: name=Command1
3) - Image: name=Image1 (per mostrare il risultato)
4) Codice contenuto nel modulo del form:
--------------------------------------------------------------------------------
----
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, ByVal xSrc As
Long, _
ByVal ySrc As Long, _
ByVal dwRop As Long) As Long
Private Sub Command1_Click()
Set Image1.Picture = createIcon(23)
End Sub
Private Function createIcon(ByVal num As Long) As IPictureDisp
' Mostra i picture (altrimenti non funziona)
picSrc.Visible = True
picDes.Visible = True
' Ripulisce controlli
Set picSrc.Picture = Nothing
Set picDes.Picture = Nothing
' Numero che verrà sovrapposto all'icona
lbl.Caption = num
' Assegna dimensione controlli per la creazione dell'immagine
picSrc.Height = 500 ' o l'altezza del controllo finale
picSrc.Width = 500 ' o la larghezza del controllo finale
picDes.Height = picSrc.Width
picDes.Width = picSrc.Width
' Centra la label orizzontalmente
lbl.Left = Abs(picSrc.ScaleWidth - lbl.Width) / 2
' Label in basso e spostata un po' verso l'alto
lbl.Top = Abs(picSrc.ScaleHeight - lbl.Height - 40)
' Carica l'immaggine nel controllo source
picSrc.Picture = ImageListMain.ListImages(o.indiceIcona).Picture
' Copia l'immagine nel controllo destinazione
BitBlt picDes.hDC, 0, 0, 200, 200, picSrc.hDC, 0, 0, &HCC0020
' Nasconde controlli picture
picSrc.Visible = False
picDes.Visible = False
Pagina 1
2. Modifcare un Icona [VB6][Santi Caltabiano].txt
' Restituisce il risultato
Set createIcon = picDes.Image
End Function
--------------------------------------------------------------------------------
----
Questo meccanismo può essere utilizzato per assegnare l'immagine ad un oggetto
Panel di un
controllo status bar per gestire un effetto notifica in una tray icons.
Pagina 2