Napisałem znalazłem i przerobiłem funkcję która rysuje gradient
- Kod: Zaznacz cały
void TForm1::GradVertical(TCanvas *Canvas, TRect Rect, TColor FromColor, TColor ToColor) {
int Y;
double dr,dg,db;
TColor C1,C2;
int r1,r2,g1,g2,b1,b2;
int R,G,B;
double cnt;
C1 = FromColor;
r1 = GetRValue(C1) ;
g1 = GetGValue(C1) ;
b1 = GetBValue(C1) ;
C2 = ToColor;
r2 = GetRValue(C2) ;
g2 = GetGValue(C2) ;
b2 = GetBValue(C2) ;
dr = double(r2-r1) / Rect.Bottom-Rect.Top;
dg = double(g2-g1) / Rect.Bottom-Rect.Top;
db = double(b2-b1) / Rect.Bottom-Rect.Top;
cnt = 0;
for(Y=Rect.top; Y<Rect.Bottom-1;++Y) {
R = r1+dr*(cnt) ;
G = g1+dg*(cnt) ;
B = b1+db*(cnt) ;
Canvas->Pen->Color = RGB(R,G,B) ;
Canvas->MoveTo(Rect.Left,Y) ;
Canvas->LineTo(Rect.Right,Y) ;
cnt+=1;
}
}
Efektem jej dzialania jest gradient ale jak by skrócony ( wynik w załączniku )
Paleta kolorów na górze pokazuje jak aktualnie to działa Paleta kolorów na dole pokazuje jaki efekt bym chciał uzyskać. Spotkał się ktoś kiedyś z takim problem ??
Może ma ktoś jakis pomysł jak to rozwiązać ??
Pozdrawiam