azot16
7/1/2007 10:17:00 PM
Witam.
Ponizej przedstawilem funkcje rysujaca kolo wypelnione gradientowym
kolorem (gradient rozchodzi sie promieniscie). Wszystko dziala jak
nalezy. Problem polega na tym, ze jezeli zechce to kolo (elipse)
narysowac w innym miejscu ekranu (inne wspólrzedne) to musze tez
zmienic wspólrzedne "path" z której tworze "brush-a".
Pytanie: czy mozna w jakis sposób obejsc ponowne tworzenie brush-a,
tak aby stworzyc go raz i pózniej rysowac nim takie same kola w róznym
miejscu ekranu. Rysowanie za pomoca tekstury wczytywanej z pliku
odpada ze wzgledu na to, ze kolory gradientu w rzeczywistym programie
beda generowane dynamicznie na podstawie zmiennych programu. Program
pisany jest w VC++ unmanaged & GDI+.
void DrawGradientEllipse(Graphics& graphics)
{
int count = 1;
Color center = Color::DodgerBlue;
Color outer[] = {Color::Blue};
GraphicsPath path;
path.AddEllipse(0,0,100,100);
PathGradientBrush path_brush(&path);
path_brush.SetCenterColor(center);
path_brush.SetSurroundColors(outer, &count);
graphics.FillEllipse(&path_brush, 0, 0, 100, 100);
}