zmiana koloru co 1 pixel w okregu

0

Witam mam taki problem musze napisac program w Delphi który ma rysować okrąg o srodku w punkcie (x,y) i promieniu który jest odcinkiem punktów srodka okregu (x,y) i jakiegos punktu (a,b). Nastepnie ma byc malowany kazdy pixel innym kolorem tworząc kolorowe pierscienie zaczynając od punktu srodkowego.
Ma ktoś jakiś pomysł ?

0

Musisz obliczyć sobie odległość punktu x,y od a,b z twierdzenia pitagorasa...
Wstawić tą wartość do jakiejś zmiennej np. z
Gdy już znasz tą odległość możesz za pomocą Ellipse(x-z,y-z,x+z,y+z); narysować ten okrąg...
Potem dajesz sobie pętelkę i rysujesz okręgi z randomizowanymi kolorami... Nic prostszego...

EDIT:// Zaimplementowałem sobie to i zainspirowany otrzymanym efektem zacząłem się bawić w okręgi... Dodałem sobie timera i dodałem opcję, żeby kolory przechodziły płynnie... Polecam napisać coś takiego żeby się na chwilkę rozerwać ;)

0

a mugłbyś podać wzór jak to liczysz z tego pitagorasa no i tą pentelke ;) bo kombinuje i zle mi wychodzi i staje sie to mało przyjemne

0

Nie no żeby pitagorasa nie znać? ;-P
Do FormCreate:

randomize;

Button i 4 edity na formę
Kod do buttona:

procedure TForm1.Button1Click(Sender: TObject);
var
i,x,y,a,b,z:integer;
r,g,bb:byte;
begin
x:=strtoint(edit1.Text);
y:=strtoint(edit2.Text);
a:=strtoint(edit3.Text);
b:=strtoint(edit4.Text);
z:=round(sqrt(((x-a)*(x-a))+((y-b)*(y-b))));
form1.Canvas.Brush.Style:=bsClear;
for i:=z downto 0 do
begin
r:=random(255);
g:=random(255);
bb:=random(255);
form1.Canvas.Pen.Color:=rgb(r,g,bb);
form1.Canvas.Ellipse(x-z+i,y-z+i,x+z-i,y+z-i);
end;
end;

Może być? ;-P

1 użytkowników online, w tym zalogowanych: 0, gości: 1