Spirala v delphi
-
RoQa
Darca
- Príspevky: 2613
- Registrovaný: 16 mar 2007, 22:21
- Bydlisko: BA<->Východ
- Kontaktovať používateľa:
Spirala v delphi
potrebujem niekoho kto by mi spravil aby mi kreslilo spiralu v dephi s nejakym vysvetlenim . dakujem
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Kód: Vybrať všetko
procedure TForm1.FormCreate(Sender: TObject);
begin
r:=10; //pociatocny polomer
uhol:=0; //pocitocny uhol (r a uhol su globalne premenne)
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;
nx,ny:integer;
begin
x:=image1.Width div 2; //stred vykreslovania
y:=image1.height div 2;
nx:= round(x + r*cos(uhol / 180 * PI)); //vyratanie novej pozicie
ny:= round(y + r*sin(uhol / 180 * PI));
inc(uhol); //zvysenie uhla
if(uhol mod 45)=0 then inc(r); //aby sme nekreslili kruh, treba zvysovat polomer.
image1.Canvas.Pixels[nx,ny]:=clBlack; //vykreslenie bodu
end;- Prílohy
-
- spirala.rar
- (163.11 KiB) 46 stiahnutí
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
-
RoQa
Darca
- Príspevky: 2613
- Registrovaný: 16 mar 2007, 22:21
- Bydlisko: BA<->Východ
- Kontaktovať používateľa:
Audiotrack alebo niekto ochotny ak by sa dalo tam este hodit nejaky Edit/Memo a ktomu neviem ale asi bude treba Button a aby to bolo tak aby som pociuatocny uhol zadal do mema / Editu .... Dik moc
btw. tomu moc nechapem ''//vyratanie novej pozicie'' .... a este keby sa dala zvacsit ta perioda po ktorej sa to vykresluje aby to bolo rychlejsie lebo v timeri som dal 1 ale stale je to pomaly
btw. tomu moc nechapem ''//vyratanie novej pozicie'' .... a este keby sa dala zvacsit ta perioda po ktorej sa to vykresluje aby to bolo rychlejsie lebo v timeri som dal 1 ale stale je to pomaly
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
bude to rýchlejšie keď dáš vyšší polomer, toto sa ti zdá pomaly lebo vykresluje veľa bodov blízko seba. Keď špirála trochu "narastie" bude sa kresliť rýchlejšie. (prípadne môžeš v jednom cykle timeru vykresliť viac bodov ako jeden) Čo sa týka toho že nechápeš vyrátavaniu toho nového bodu, s tým ja nič nenarobím. Treba dávať pozor v škole, tieto vzorce vychádzajú zo vzorca pre kružnicu a učia sa na strednej. Taktiež aby to bolo rýchlejšie, treba periodu znížiť a nie zväčšiť, že ty nedávaš v škole moc pozor? 
- Prílohy
-
- spirala2.rar
- (175.08 KiB) 36 stiahnutí
-
RoQa
Darca
- Príspevky: 2613
- Registrovaný: 16 mar 2007, 22:21
- Bydlisko: BA<->Východ
- Kontaktovať používateľa:
tak mi to povedal ucitelaudiotrack napísal:...Taktiež aby to bolo rýchlejšie, treba periodu znížiť a nie zväčšiť, že ty nedávaš v škole moc pozor?
//autoeditácia príspevku ( 12 May 2009, 21:16 )
mohol by si mi este napisat co znamena kazdy z krokov
Kód: Vybrať všetko
r:=strtoint(edit1.text);
uhol:=strtoint(edit2.text);
image1.Canvas.Rectangle(0,0,image1.width,image1.height);
timer1.Enabled:=true;-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
XPmanifest je aby boli komponenty v XP štýle a nie tom starom win 98 štýle (tie edity a tlačidlo)
do r uloží číselnú hodnotu z edit1
to isté s uhlom
vykreslenie štvorca cez celý canvas (aby som zmazal čo bolo doteraz nakreslené)
zapnutie timeru /zabudol som to zmazať, netreba to/
a mal by si porozmýšlať nad nejakou knihou alebo návodmi. Keď nevieš základné veci (ako priradiť hodnotu z editu do premennej), tak ma to s tebou rýchlo prestane baviť
Kód: Vybrať všetko
r:=strtoint(edit1.text);Kód: Vybrať všetko
uhol:=strtoint(edit2.text);Kód: Vybrať všetko
image1.Canvas.Rectangle(0,0,image1.width,image1.height);Kód: Vybrať všetko
timer1.Enabled:=true;a mal by si porozmýšlať nad nejakou knihou alebo návodmi. Keď nevieš základné veci (ako priradiť hodnotu z editu do premennej), tak ma to s tebou rýchlo prestane baviť
-
RoQa
Darca
- Príspevky: 2613
- Registrovaný: 16 mar 2007, 22:21
- Bydlisko: BA<->Východ
- Kontaktovať používateľa:
ok ok ja som to tak robil len som tam nedal a stale v kuse mi to kreslilo 
Kód: Vybrať všetko
image1.Canvas.Rectangle(0,0,image1.width,image1.height);