PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → splash screen avec degradé de transparence
splash screen avec degradé de transparence
Débuté par Multon Arnaud, 20 jan. 2006 12:27 - 5 réponses
Posté le 20 janvier 2006 - 12:27
Bonjour,
j'aimerais pouvoir réaliser un splash screen avec différent niveaux de transparence, comme le logo de lancement de WinDev 10 (si si le reflet de l'ile a bien l air d'avoir plusieurs niveauw de transparence). J'ai pour l'instant essayer avec une image png contenant une couche alpha mais il n'y a aucune transparence... N'avoir qu'une couleur de transp. comme le magenta n'est pas suffisant, et tous les splashscreen fournis dans le catalogue sont des bmp...
Est-ce seulement possible?? Avec des appels dll peut etre??
Posté le 20 janvier 2006 - 15:12
Je crois qu'il va y avoir un exemple dans la prochaine LST
Posté le 20 janvier 2006 - 15:56
ce serait pas mal :)
en tout cas, la documentation n'en parle pas beaucoup, elle parle beaucoup du magenta transparent mais pas de plusieurs degrés de transparence
Posté le 20 janvier 2006 - 16:37
La solution c'est de créer une copie de l'image couleur d'origine,
sous forme d'une image en niveau de gris dont chaque pixel correspond à une valeur comprise en 0 et 255.

La valeur 0 correspond à une transparence complète.
La valeur 255 au mode opaque complet.

Ensuite il faut créer un DIB 32-bit et y copier l'image couleur (avec BitBlt)
puis remplir l'alpha channel (pixel de type ARGB) avec la valeur du pixel correspondant dans l'image en niveau de gris.

Et pour finir on utilise l'API AlphaBlend ou GDIPLUS pour afficher le tout...
Posté le 20 janvier 2006 - 17:41
pas de probleme en ce qui concerne l'alpha channel et tout, je l'ai déja...
par contre quand tu dis "il faut créer un DIB 32-bit et y copier l'image couleur (avec BitBlt)", je ne suis pas sur de ce que ca veut dire.
Et il me faudrait qques precisions sur "Et pour finir on utilise l'API AlphaBlend ou GDIPLUS pour afficher le tout" si tu peux (je sais comment fonctionne les appels DLL sous windev mais je vois pas trop comment là tout de suite)
Posté le 20 janvier 2006 - 18:03
Windows GDI
AlphaBlend
The AlphaBlend function displays bitmaps that have transparent or semitransparent pixels.

BOOL AlphaBlend(
HDC hdcDest, // handle to destination DC
int nXOriginDest, // x-coord of upper-left corner
int nYOriginDest, // y-coord of upper-left corner
int nWidthDest, // destination width
int nHeightDest, // destination height
HDC hdcSrc, // handle to source DC
int nXOriginSrc, // x-coord of upper-left corner
int nYOriginSrc, // y-coord of upper-left corner
int nWidthSrc, // source width
int nHeightSrc, // source height
BLENDFUNCTION blendFunction // alpha-blending function
);
Parameter
hdcDest
[in] Handle to the destination device context.
nXOriginDest
[in] Specifies the x-coordinate, in logical units, of the upper-left corner of the destination rectangle.
nYOriginDest
[in] Specifies the y-coordinate, in logical units, of the upper-left corner of the destination rectangle.
nWidthDest
[in] Specifies the width, in logical units, of the destination rectangle.
nHeightDest
[in] Specifies the height, in logical units, of the destination rectangle.
hdcSrc
[in] Handle to the source device context.
nXOriginSrc
[in] Specifies the x-coordinate, in logical units, of the upper-left corner of the source rectangle.
nYOriginSrc
[in] Specifies the y-coordinate, in logical units, of the upper-left corner of the source rectangle.
nWidthSrc
[in] Specifies the width, in logical units, of the source rectangle.
nHeightSrc
[in] Specifies the height, in logical units, of the source rectangle.
blendFunction
[in] Specifies the alpha-blending function for source and destination bitmaps, a global alpha value to be applied to the entire source bitmap, and format information for the source bitmap. The source and destination blend functions are currently limited to AC_SRC_OVER. See the BLENDFUNCTION and EMRALPHABLEND structures.
Return Values
If the function succeeds, the return value is TRUE.

If the function fails, the return value is FALSE.

Windows NT/2000/XP: To get extended error information, call GetLastError. This can return the following value.

Value Meaning
ERROR_INVALID_PARAMETER One or more of the input parameters is invalid.


Remarks
If the source rectangle and destination rectangle are not the same size, the source bitmap is stretched to match the destination rectangle. If the SetStretchBltMode function is used, the iStretchMode value is automatically converted to COLORONCOLOR for this function (that is, BLACKONWHITE, WHITEONBLACK, and HALFTONE are changed to COLORONCOLOR).

The destination coordinates are transformed by using the transformation currently specified for the destination device context. The source coordinates are transformed by using the transformation currently specified for the source device context.

An error occurs (and the function returns FALSE) if the source device context identifies an enhanced metafile device context.

If destination and source bitmaps do not have the same color format, AlphaBlend converts the source bitmap to match the destination bitmap.

AlphaBlend does not support mirroring. If either the width or height of the source or destination is negative, this call will fail.

When rendering to a printer, first call GetDeviceCaps with SHADEBLENDCAPS to determine if the printer supports blending with AlphaBlend. Note that, for a display DC, all blending operations are supported and these flags represent whether the operations are accelerated.

If the source and destination are the same surface—that is, they are both the screen or the same memory bitmap—and the source and destination rectangles overlap, an error occurs and the function returns FALSE.

The source rectangle must lie completely within the source surface, otherwise an error occurs and the function returns FALSE.

AlphaBlend fails if the width or height of the source or destination is negative.

Note The SourceConstantaAlpha member of BLENDFUNCTION specifies an alpha transparency value to be used on the entire source bitmap. The SourceConstantAlpha value is combined with any per-pixel alpha values. If SourceConstantAlpha is 0, it is assumed that the image is transparent. Set the SourceConstantAlpha value to 255 (which indicates that the image is opaque) when you only want to use per-pixel alpha values.

Requirements
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Included in Windows 98 and later.
Header: Declared in Wingdi.h; include Windows.h.
Library: Included as a resource in Msimg32.dll.

See Also
Bitmaps Overview, Bitmap Functions, BLENDFUNCTION, EMRALPHABLEND, GetDeviceCaps, SetStretchBltMode