LinearGradientBrush::GetBlend, méthode (gdiplusbrush.h)
La méthode LinearGradientBrush::GetBlend obtient les facteurs de fusion et leurs positions de fusion correspondantes à partir d’un objet LinearGradientBrush .
Syntaxe
Status GetBlend(
[out] REAL *blendFactors,
[out] REAL *blendPositions,
[in] INT count
);
Paramètres
[out] blendFactors
Type : REAL*
Pointeur vers un tableau qui reçoit les facteurs de fusion. Chaque nombre du tableau indique un pourcentage de la couleur de fin et se trouve dans la plage comprise entre 0,0 et 1,0.
[out] blendPositions
Type : REAL*
Pointeur vers un tableau qui reçoit les positions de fusion. Chaque nombre dans le tableau indique un pourcentage de la distance entre la limite de départ et la limite de fin et se trouve dans la plage comprise entre 0,0 et 1.0, où 0,0 indique la limite de début du dégradé et 1.0 indique la limite de fin. Une position de fusion comprise entre 0,0 et 1,0 indique une ligne, parallèle aux lignes limites, qui est une certaine fraction de la distance entre la limite de départ et la limite de fin. Par exemple, une position de fusion de 0,7 indique la ligne qui correspond à 70 % de la distance entre la limite de départ et la limite de fin. La couleur est constante sur les lignes qui sont parallèles aux lignes limites.
[in] count
Type : INT
Entier qui spécifie le nombre de facteurs de fusion à récupérer. Avant d’appeler la méthode LinearGradientBrush::GetBlend d’un objet LinearGradientBrush , appelez la méthode LinearGradientBrush::GetBlendCount de ce même objet LinearGradientBrush pour déterminer le nombre actuel de facteurs de fusion. Le nombre de positions de fusion récupérées est identique au nombre de facteurs de fusion récupérés.
Valeur retournée
Type : État
Si la méthode réussit, elle retourne Ok, qui est un élément de l’énumération Status .
Si la méthode échoue, elle retourne l’un des autres éléments de l’énumération Status .
Notes
Un objet LinearGradientBrush a deux limites parallèles : une limite de début et une limite de fin. Une couleur est associée à chacune de ces deux limites. Chaque limite est une ligne droite qui passe par un point spécifié : la limite de départ passe par le point de départ ; la limite de fin passe par le point de terminaison et est perpendiculaire à la direction du pinceau de dégradé linéaire. La direction du pinceau de dégradé linéaire suit la ligne définie par les points de départ et de fin. Cette ligne, la « ligne directionnelle », peut être horizontale, verticale ou diagonale. Tous les points qui se trouvent sur une ligne parallèle aux limites sont de la même couleur. Lorsque vous remplissez une zone avec un pinceau de dégradé linéaire, la couleur change progressivement d’une ligne à l’autre à mesure que vous vous déplacez le long de la ligne directionnelle de la limite de début à la limite de fin. Par défaut, le changement de couleur est proportionnel à la modification de la distance ; autrement dit, une ligne de 30 % de la distance entre la limite de départ et la limite de fin a une couleur qui correspond à 30 % de la distance entre la couleur de limite de début et la couleur de limite de fin. Le motif de couleur est répété en dehors des limites de début et de fin.
Vous pouvez appeler la méthode LinearGradientBrush::SetBlend d’un objet LinearGradientBrush pour personnaliser la relation entre la couleur et la distance. Par exemple, supposons que vous définissez les positions de fusion sur {0, 0.5, 1} et que vous définissez les facteurs de fusion sur {0, 0.3, 1}. Ensuite, une ligne de 50 % de la distance entre la limite de début et la limite de fin aura une couleur qui correspond à 30 % de la distance entre la couleur de limite de début et la couleur de limite de fin.
Exemples
L’exemple suivant crée un pinceau en dégradé linéaire, définit son mélange et utilise le pinceau pour remplir un rectangle. Le code obtient ensuite le mélange. Les facteurs de fusion et les positions peuvent ensuite être inspectés ou utilisés d’une manière ou d’une autre.
VOID Example_GetBlend(HDC hdc)
{
Graphics myGraphics(hdc);
// Create a linear gradient brush, and set its blend.
REAL fac[] = {0.0f, 0.4f, 0.6f, 1.0f};
REAL pos[] = {0.0f, 0.2f, 0.8f, 1.0f};
LinearGradientBrush linGrBrush(
Point(0, 0),
Point(100, 0),
Color(255, 255, 0, 0), // red
Color(255, 0, 0, 255)); // blue
linGrBrush.SetBlend(fac, pos, 4);
// Use the linear gradient brush to fill a rectangle.
myGraphics.FillRectangle(&linGrBrush, 0, 0, 100, 50);
// Obtain information about the linear gradient brush.
INT blendCount;
REAL* factors = NULL;
REAL* positions = NULL;
blendCount = linGrBrush.GetBlendCount();
factors = new REAL[blendCount];
positions = new REAL[blendCount];
linGrBrush.GetBlend(factors, positions, blendCount);
for(INT j = 0; j < blendCount; ++j)
{
// Inspect or use the value in factors[j].
// Inspect or use the value in positions[j].
}
}
Spécifications
Client minimal pris en charge | Windows XP, Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | gdiplusbrush.h (inclure Gdiplus.h) |
Bibliothèque | Gdiplus.lib |
DLL | Gdiplus.dll |
Voir aussi
Remplissage de formes avec un pinceau dégradé
Remplissage d’une forme avec un dégradé de couleurs