gdi+ mit LinearGradientBrush schräg füllen



  • Hallo,
    ich benutze GDI+, und will jetzt mal mit FillRectangle einen Rechteck mit einem LinearGradientBrush schräg füllen, z.B. von Rechtsoben weiß nach links unten schwarz. Also 135°.
    Code:

    float rad = ((float)(135)/360.0f)*2*M_PI;
      int y = tan(rad) * 100;
    
      Gdiplus::LinearGradientBrush* newlBrush = new Gdiplus::LinearGradientBrush(Gdiplus::Point(0, 0), Gdiplus::Point(100,y), Gdiplus::Color::White, Gdiplus::Color::Black);
    

    Problem: Das funktioniert nicht richtig. Es ist im falschen Winkel, und es fängt in den Ecken an den falschen Positionen an. (Bildbeschreibung: wenn man von der linken oberen Ecke nach rechts unten das Bild teilt, ist im linken Teil fast komplett schwarz, es geht von schwarz (an der hälfte) nach dunkel grau (links unten), in der rechten hälfte geht es von weiß nach hellgrau (rechts oben)).
    Bei 90° ist es komplett weiß.

    Ich bin am verzweifeln. So helft mir doch! 😕

    danke schonmal im Voraus



  • Jippiie, teilweise ist das Problem gelöst:

    Gdiplus::LinearGradientBrush* newlBrush = new Gdiplus::LinearGradientBrush(Gdiplus::Point(UDFrom->Position, 1), Gdiplus::Point(UDTo->Position-UDFrom->Position,1), Gdiplus::Color::White, Gdiplus::Color::Black);
      newlBrush->RotateTransform(Winkel);
    

    Nur entsteht immernoch eine Art Rand wie vorher beschrieben bei Winkeln von über 90°.



  • Ich geb auf...

    Gibts irgendwo eine ordentliche FillAPI?


Anmelden zum Antworten