Domanda

In c #, puoi usare drawing2d.lineargradientbrush, ma in c ++ in questo momento ho trovato solo la funzione CreateSolidBrush. Esiste una funzione nella dll gdi nativa per creare un pennello sfumato? Non sono riuscito a trovare nulla del genere su msdn. Grazie

È stato utile?

Soluzione

Per disegnare un gradiente verticale:

void VerticalGradient(HDC hDC, const RECT& GradientFill, 
                      COLORREF rgbTop, COLORREF rgbBottom)
{
    GRADIENT_RECT gradientRect = { 0, 1 };
    TRIVERTEX triVertext[ 2 ] = {
        GradientFill.left - 1,
        GradientFill.top - 1,
        GetRValue(rgbTop) << 8,
        GetGValue(rgbTop) << 8,
        GetBValue(rgbTop) << 8,
        0x0000,         
        GradientFill.right,
        GradientFill.bottom,
        GetRValue(rgbBottom) << 8,
        GetGValue(rgbBottom) << 8,
        GetBValue(rgbBottom) << 8,
        0x0000
    };
    GradientFill(hDC, triVertext, 2, &gradientRect, 1, GRADIENT_FILL_RECT_V);
}

Altri suggerimenti

Dovresti usare una combinazione dell'API Win32 GradientFill , CreateCompatibleBitmap e CreatePatternBrush

C # usa GDI + per Drawing2d. Puoi anche usare GDI + in C ++ - MSDN Creazione di un lineare gradiente

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top