Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con AlphaBlend

Qualcuno mi sapreppe dire dove sbaglia questo codice?
- Questa è una dichiarazione che ho creato leggendo la documentazione C++
sulla funzione AlphaBlend
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hDCDest As
Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal
nWidthDest As Long, ByVal hHeightDest As Long, ByVal hDCScr As Long, ByVal
nXOriginSrc As Long, ByVal nYOriginScr As Long, ByVal nWidthScr As Long,
ByVal nHeightScr As Long, uBlendFunction As BLEND) As Boolean
- E questo è il relativo tipo che utilizza
Private Type BLEND
    BlendOp As Byte
    BlendFlag As Byte
    SourceCostantAlpha As Byte
    AlphaFormat As Byte
End Type
Questo è il codice che uso
Dim bl As BLEND
Dim d As Boolean
bl.BlendOp = &H0
bl.BlendFlag = &H0
bl.SourceCostantAlpha = &HFF
bl.AlphaFormat = &H0
d = AlphaBlend(Picture2.hdc, 0, 0, 100, 100, Picture1.hdc, 0, 0, 100, 100,
bl)
però la funzione restituisce False... come faccio a farla funzionare
correttamente?
Ringrazio preventivamente chiunque mi sapesse dare una risposta.
--
Ciao
Super Sabba

 restituisce False... come faccio a farla funzionare correttamente?
Sotto che sistema operativo lo stai provando?
Attenzione che AlphaBlend funziona solo su Win98 e NT5 (Windows 2000).
Se hai Win95 o NT4, niente da fare.
Ciao
*Roby*

Sě, sě lo so che funziona solo sotto Win98.
La funziona la trova VB, non mi fa nessun errore di mancanza di riferimento
o di DLL non trovata..., solo che la funziona quando viene eseguita mi
restituisce 0
--------
Ciao
Super Sabba

 solo che la funziona quando viene eseguita mi  restituisce 0
0 o -1?
Comunque AlphaBlend a quanto ho visto serve per gestire immagini che per
ogni pixel abbiano anche la componente di trasparenza.
Cito da MSDN:
"Alpha blending is used to display bitmaps that have transparent or
semi-transparent pixels. In addition to a red, green, and blue color
channel, each pixel in an alpha bitmap has a transparency component known as
its alpha channel. "
Sei sicuro che le normali bitmap di VB siano adatte per gestire questo tipo
di immagini?
Secondo me questa funzionalità viene gestita a priori specificando
l'attributo WS_EX_LAYERED quando si crea la finestra con CreateWindowEx.
Però personalmente non le ho mai usate e potrei sbagliarmi.
Ciao
*Roby*
P.S.
Questa cosa mi ricorda un documento preliminare Microsoft che parlava di una
possibile interfaccia a finestre 3D, che potevano essere mosse anche lungo
l'asse Z del desktop e ruotate fino ad essere visibili di taglio (dove per
inciso doveva essere scritta la caption della finestra).
Tra le possibili funzionalità, c'era anche quella di rendere le finestre
semitrasparenti, in modo da potere recuperare quelle portate in secondo
piano sull'asse Z.
Che sia per quello che Microsoft ha inserito queste API?

Restituisce 0.
La documentazione l'ho trovata su VBPJ di Gennaio, e dice (oltre al fatto di
poter utilizzare la BMP con i bit alpha) che si può utilizzare come
BitBlt...ma chissà.
Comunque ti ringrazio molto per il tuo interessamento.
-------
Ciao
Super Sabba

Mamma mia! E che razza di scheda video ci vorrebbe? La mia Ati viene sempre più
mortificata ad ogni aggiornamento di Windows, e i famosi driver aggiornati mi
freezano tutto anche quando tento di fare operazioni ridicole come trascinare
una scrollbar... finestre 3D! Ruotabili! Desktop 3D! Alpha blending! magari
anche il lens-flare!


 anche il lens-flare!
Oltre all'alpha blending il problema maggiore è mantenere visibili le
scritte mentre si ruotano le finestre. E' necessaria una tecnica di
anti-aliasing evoluta che sia specifica per i font. Ah, e ovviamente la
risoluzione di riferimento è 1280x1024, senza contare che per ruotare le
finestre sull'asse Z bisogna inventarsi una nuova rotellina sul mouse, o
addirittura passare ad un diverso sistema di puntamento.
I mouse 3d a dire il vero esistono già Si tratta di oggetti simili al mouse
normale ma senza fili e con 2 alucce ai lati sotto le quali devi posizionare
il pollice e il mignolo. Un apposito scatolotto si occupa di triangolarne la
posizione relativa, quindi tu puoi spostarlo liberamente nell'aria e vedi il
puntatore del mouse (ovviamente un tronco di cono) ingrandirsi e
rimpicciolirsi di conseguenza.
Non mi sono informato sul prezzo, ma se ti interessa, una roba simile girava
a Londra 3 anni fa su di una Silicon Graphics e permetteva di muovere in 3d
la carrozzeria di un maggiolino zincato, su di un prato verde, calcolando le
rifrazioni in realtime..
Ciao
*Roby*

 wrote in message
86heih$mrp$1...@nslave2.tin.it...
