Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Caricare PNG in VB6
Forum - Visual Basic 6 - Caricare PNG in VB6

Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 13:39
Giovedì, 16/06/2011
ho seguito questo link
http://nuke.vbcorner.net/Progetti/VB60/Progettivari/tabid/ ...
trovato in un altro thread,sempre qui in sezione.
ho tentato di adattare il codice per la mia applicazione.

ho caricato il modulo.bas
creato un form di test
aggiunto un tasto command
incollato il codice, filtrando le linee di comando che ritenevo fossero adatte e
scartando quello in piu'.
il PNG da caricare dentro il tasto command1 è tasc.png

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
  4.  
  5. Public Sub LoadPNG(ByVal sFilePNG As String)
  6.     Dim lngInitGDIPlus As Long
  7.     Dim C As Long
  8.     Dim sFile As String
  9.    
  10.     sFile = APP.Path & "\tasc.png" '& sFilePNG
  11.     C = Me.BackColor
  12.        
  13.     If C < 0 Then C = GetSysColor(C - &H80000000)
  14.        
  15.     lngInitGDIPlus = InitGDIPlus
  16.        
  17.    
  18.     Picture1.Picture = LoadPictureGDIPlus(sFile, , , C)
  19.    
  20.     With Command1
  21.         .Width = Picture1.Width
  22.         .Height = Picture1.Height + 300
  23.         .Picture = LoadPictureGDIPlus(sFile, , , C)
  24.     End With
  25.    
  26.    
  27.     FreeGDIPlus lngInitGDIPlus
  28.  
  29.     UpdateSetLayout
  30.    
  31. End Sub



Non ho capito bene il fatto del picture1, cmq non carica il PNG ed immagino
perche' ho sbagliato sicuramente qualcosa.
Qualcuno puo' farmi vedere l'errore?
Grazie


PM Quote
Avatar
gibra (Normal User)
Pro


Messaggi: 155
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 14:33
Giovedì, 16/06/2011
Sono l'autore del progetto. :)
A me funziona benissimo.

Ti sei ricordato di impostare la proprietà Style del CommandButton su Graphical?





PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 18:08
Giovedì, 16/06/2011
Si certo, quando crei il tasto command è su standard di default e se vuoi
"decorare" il tasto bisogna andare su Graphical.

Ora,nel tuo progetto fai un esempio per 4 PNG su 4 tipi di oggetti
Tasto command
picture
image
e un altro ( non ricordo al momento)

L'errore devo averlo fatto estrapolando il codice solo per un tasto command, che poi varrebbe anche per gli altri oggetti con le dovute modifiche.

Saresti cosi' gentile da controllarmi il codice,sono sicuro che cosi' come l'homesso ci sono errori che per non conoscenza non riesco a vedere.

Ti ringrazio

PM Quote
Avatar
gibra (Normal User)
Pro


Messaggi: 155
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 8:38
Venerdì, 17/06/2011
La routine LoadPNG è più complessa del normale perchè vuole dimostra diverse modalità.
Ti posto una routine LoadPNG() ridotta all'osso, cioè serve esclusivamente per caricare una certa immagine PNG in un determinato controllo.
Basta passare il controllo ed il path del file PNG

Codice sorgente - presumibilmente VB.NET

  1. Public Sub LoadPNG(ByRef pControl As Control, ByVal sFilePNG As String)
  2.     Dim lngInitGDIPlus As Long
  3.     Dim C As Long
  4.    
  5.     C = Me.BackColor
  6.     If C < 0 Then C = GetSysColor(C - &H80000000)
  7.        
  8.     lngInitGDIPlus = InitGDIPlus
  9.     pControl.Picture = LoadPictureGDIPlus(sFilePNG, , , C)
  10.     FreeGDIPlus lngInitGDIPlus
  11. End Sub



E la si usa così:
Codice sorgente - presumibilmente Plain Text

  1. LoadPNG Command1, App.Path & "\immagine.png"



:)

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 11:58
Venerdì, 17/06/2011
Grande!!! Funziona :-)
Questa è davvero un' ottima cosa.
Poter caricare dei PNG puo' migliorare molto la grafica...a parer mio.

Ho provato anche con altri oggetti,  
la routine che mi hai passato funziona su tutto

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2. LoadPNG Command1, App.Path & "\blender.png"
  3. LoadPNG Image1, App.Path & "\antivirus.png"
  4. LoadPNG Picture1, App.Path & "\1.png"
  5. End Sub



Grazie^3,Ciao

PM Quote
Avatar
gibra (Normal User)
Pro


Messaggi: 155
Iscritto: 16/04/2009

Segnala al moderatore
Postato alle 9:23
Sabato, 18/06/2011
Testo quotato

Postato originariamente da fusebyte:

Grande!!! Funziona :-)
Grazie^3,Ciao



Prego. :)

PM Quote