[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

Gradientowe wypelnienie kola

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);
}

2 Answers

Doker

7/2/2007 9:02:00 AM

0

azot16 napisa3(a):
> Witam.
>
> Poni?ej przedstawi3em funkcje rysuj?c? ko3o wype3nione gradientowym
> kolorem (gradient rozchodzi sie promieni?cie). Wszystko dzia3a jak
> nale?y. Problem polega na tym, ?e je?eli zechce to ko3o (elipse)
> narysowaa w innym miejscu ekranu (inne wspó3rzedne) to musze te?
> zmienia wspó3rzedne "path" z której tworze "brush-a".
>
> Pytanie: czy mo?na w jaki? sposób obej?a ponowne tworzenie brush-a,
> tak aby stworzya go raz i pó?niej rysowaa nim takie same ko3a w ró?nym
> miejscu ekranu. Rysowanie za pomoc? tekstury wczytywanej z pliku
> odpada ze wzgledu na to, ?e kolory gradientu w rzeczywistym programie
> bed? generowane dynamicznie na podstawie zmiennych programu. Program
> pisany jest w VC++ unmanaged & GDI+.
Jak pisalem w C# p3aszczyzna mia3a metode Translate. Mozna bylo sobie
ustawic poczatek ukladu wspolrzednych w dowolnym miejscu. Znajdz to a
zadziala.

Pozdrawiam,
Jarek

azot16

7/2/2007 10:23:00 PM

0

> Jak pisalem w C# plaszczyzna miala metode Translate. Mozna bylo sobie
> ustawic poczatek ukladu wspolrzednych w dowolnym miejscu. Znajdz to a
> zadziala.

Znalazlem - nalezy dokonac translacji brush-a (translacja plaszczyzny
to za duzy kaliber).

path_brush.TranslateTransform( x_new, y_new, MatrixOrderPrepend );

Dzieki za podpowiedz.