PDA

View Full Version : [VB6] DIB??? Che macello BMP (o jpg) TO DIB


Fede
27-10-2008, 16:45
Premetto di essere un po' ignorante, vi pongo un quesito che probabilmente vi sembrera' banale:


Ho una libreria che lavora solamente con DIB (device indipendent bitmap).
Non sono in grado, pero', di creare un handle DIB da una bitmap (o una jpg).
L'unico modo che ho trovato e' quello di passare dalla clipboard



OpenClipboard (Handle)

ImmagineDIB = GetClipboardData(vbCFDIB)

ecc ecc... lavorando su ImmagineDIB



Esiste un qualcosa di simile per caricarla dal disco, per esempio...

Immagine = LoadPicture("C:\img3.bmp")

Come posso farla diventare una dib???
Grazie mille in anticipo
Fede

Fede
28-10-2008, 10:22
:)

MarcoGG
28-10-2008, 11:06
Personalmente non ho mai usato i Dib. Direi che c'è da studiarci su, perciò non è argomento banale.
Ti posso segnalare questo tutorial, che pare davvero ben fatto ( ovviamente in inglese... ) :
http://edais.mvps.org/Tutorials/GDI/DIB/DIBch1.html

Fede
28-10-2008, 11:22
Ti ringrazio molto...
stavo basandomi proprio su quello.
Speravo ci fosse un sistema piu' facile.
In fin dei conti mi sarebbe sufficiente aggiungere un header sempre uguale...

In ogni caso grazie ancora.

Fede
29-10-2008, 08:55
Risolto con un workaround...
Ho fatto uno scriptino che apre mspaint (ovviamente @SF_Hide), con l'immagine(in questo modo gestisco bmp/jpg ecc ecc), la seleziona tutta, e la copia in clip, e si chiude.

GetClipboardData(vbCFDIB) si prende il dib bello e fatto.

Non sara' di certo un capolavoro, ma e' velocissimo e nascosto.

MarcoGG
29-10-2008, 09:04
Risolto con un workaround...
Ho fatto uno scriptino che apre mspaint (ovviamente @SF_Hide), con l'immagine(in questo modo gestisco bmp/jpg ecc ecc), la seleziona tutta, e la copia in clip, e si chiude.

GetClipboardData(vbCFDIB) si prende il dib bello e fatto.

Non sara' di certo un capolavoro, ma e' velocissimo e nascosto.

Beh, con il buon vecchio VB6 c'è sempre una scappatoia :D .
Inoltre è davvero difficile trovare un PC Win senza Paint installato.
Dai, posta questo tuo scriptino che sono curioso ! :)

Fede
29-10-2008, 12:55
Beh, con il buon vecchio VB6 c'è sempre una scappatoia :D .
Inoltre è davvero difficile trovare un PC Win senza Paint installato.
Dai, posta questo tuo scriptino che sono curioso ! :)




Func Paint()

;riscrivi con variabili ... cosi' fa schifo
Run("MSPAINT.EXE" & " " & """C:\imgprova.jpg""") ; controlla che la finestra appaia
while WinSetState("imgprova.jpg - Paint", "", @SW_HIDE)=0
wend
ControlSend("imgprova.jpg - Paint", "", "", "^a" ) ;send control A- seleziona tutto
sleep (100)
ControlSend("imgprova.jpg - Paint", "", "", "^c" ) ;send control C- copia in clip
sleep (100)
ControlSend("imgprova.jpg - Paint", "", "", "!{F4}" ) ;chiudi paint

EndFunc




Ho usato Autoit...
poi il vb legge la clip

MarcoGG
30-10-2008, 11:50
Ho usato Autoit...
poi il vb legge la clip


Ah ecco. Vabbeh, pensavo fosse codice VB6 e mi ero... spaventato ! :D

71104
30-10-2008, 11:58
usa l'API LoadImage:
http://msdn.microsoft.com/en-us/library/ms648045.aspx

e soprattutto, se puoi, lascia perdere Visual Basic 6, usa Visual Basic 2008:
http://www.microsoft.com/express/vb/default.aspx