|
Posledná zmena: 13.10.2002
|
grafika
|
Grafická plocha
- vo všetkých úlohách predpokladáme,
že v globálnej premennej g je priradený
"Canvas" grafickej plochy (Image1), t.j.
platí g:=Image1.Canvas;
- ďalej predpokladáme, že na formulári
je tlačidlo Button1 a väčšina úloh je
obsahom procedúry TForm1.Button1Click
- v niektorých príkladoch sa využíva
nový grafický príkaz Polygon,
ktorý má takéto volanie:
g.Polygon([Point(x1,y1),Point(x2,y2),Point(x3,y3),...]) a
jeho výsledkom je uzavretý N-uholník,
ktorý môže byž vyfarbený podľa
g.Brush
výpis čísel
|
vypíšte čísla 1..20 na uhlopriečku zadefinovanej grafickej plochy
|
var
i:integer;
begin
for i:=1 to 20 do
g.TextOut(i*16,i*12,IntToStr(i));
end;
|
výpis čísel
|
vypíšte čísla 1..100 do
štvorca 10x10
|
var
i,j,c:integer;
begin
c:=0;
for j:=1 to 10 do
for i:=1 to 10 do begin
c:=c+1;
g.TextOut(j*16,i*12,IntToStr(c));
// g.TextOut(i*16,j*12,IntToStr(c));
end;
end;
|
výpis textov na náhodné
pozície
|
na každé stlačenie tlačidla sa napíše na
náhodnej pozícii modré slovo Pascal a
červené Delphi
bez randomize sa program správa stále rovnako, t.j. slová sa
vždy po spustení programu vypisujú na rovnakých pozíciách
|
begin
randomize;
g.Font.Heigh:=20;
g.Font.Color:=clRed;
g.TextOut(random(300),random(250),’Delphi’);
g.Font.Color:=clBlue;
g.TextOut(random(300),random(250),’Pascal’);
end;
|
výpis textu s tieňom
|
vypíšte modré slová 'I love Delphi'
so sivým tieňom; vytvorte konštantu const
veta = 'I love Delphi'; nezabudnite urobiť priesvitné pozadie písmen
predĺžte
tieň

|
const
veta='I love Delphi';
var
i,x,y:integer;
begin
x:=10; y:=100;
g.Brush.Style:=bsClear;
g.Font.Height:=60;
g.Font.Name:='Arial';
g.Font.Style:=[fsBold];
g.Font.Color:=clLtGray;
g.TextOut(x+3,y-3,veta);
{for i:=1 to 15 do
g.TextOut(x+i,y-2*i,veta);}
g.Font.Color:=clBlue;
g.TextOut(x,y,veta);
end;
|
rovnostranný trojuholník
|
nakresliť rovnostranný trojuholník
so stranou a; treba použiť MoveTo
a LineTo
|
const
a=100; vyska=round(a*0.877);
var
x,y:integer;
begin
x:=100; y:=300;
g.MoveTo(x,y); g.LineTo(x+a div 2,y-vyska);
g.LineTo(x+a,y);
g.LineTo(x,y);
end;
|
vyfarbený rovnostranný trojuholník
|
nakresliť vyfarbený rovnostranný trojuholník
so stranou a; treba použiť Polygon
|
const
a=100; vyska=round(a*0.877);
var
x,y:integer;
begin
x:=100; y:=300;
g.Brush.Color:=clBlue;
g.Polygon([Point(x,y),Point(x+a div 2,y-vyska),
Point(x+a,y)]);
end;
|
pyramída
|
nakresliť n-poschodovú
trojuholníkovú pyramídu
- pomocou MoveTo a LineTo
veľkosť strany trojuholníka
je a
- kreslí sa metódou
cik-cak po poschodiach

|
const
n=10; a=50; vyska=round(a*0.877);
var
i,j,x,xx,y:integer;
begin
y:=Image1.Height-10; x:=10;
for i:=n downto 1 do begin
g.MoveTo(x,y); xx:=x;
for j:=1 to i do begin
g.LineTo(xx+a div 2,y-vyska);
xx:=xx+a; g.LineTo(xx,y);
end;
g.LineTo(x,y); y:=y-vyska; x:=x+a div 2;
end;
end;
|
dvojfarebná pyramída
|
nakresliť n-poschodovú
trojuholníkovú pyramídu
- farebné trojuholníky
kreslite pomocou Polygon

|
const
n=10; a=50; vyska=round(a*0.877);
var
i,j,x,xx,y:integer;
begin
y:=Image1.Height-10; x:=10;
g.Brush.Color:=clYellow;
g.Polygon([Point(x,y),
Point(x+n*a div 2,y-n*vyska),
Point(x+n*a,y)]);
g.Brush.Color:=clBlue;
for i:=n downto 1 do begin
xx:=x;
for j:=1 to i do begin
g.Polygon([Point(xx,y),
Point(xx+a div 2,y-vyska),
Point(xx+a,y)]);
xx:=xx+a;
end;
y:=y-vyska; x:=x+a div 2;
end;
end;
|
rôzne farebné útvary
|
zadefinovať tri tlačidlá,
ktoré na náhodné
pozície nakreslia:
- červený štvorec
- žltý rovnostranný
trojuholník
- modrý kruh
všetky útvary sú veľké
podľa a
|
const
a=100;
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
begin
x:=random(Image1.Width);
y:=random(Image1.Height);
g.Brush.Color:=clRed;
g.Rectangle(x,y,x+a,y+a);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
x,y:integer;
begin
x:=random(Image1.Width);
y:=random(Image1.Height);
g.Brush.Color:=clYellow;
g.Polygon([Point(x,y),
Point(x+a div 2,y-round(a*0.877)),
Point(x+a,y)]);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
x,y:integer;
begin
x:=random(Image1.Width);
y:=random(Image1.Height);
g.Brush.Color:=clBlue;
g.Ellipse(x,y,x+a,y+a);
end;
|
náhodné farebné
útvary v štvorcovej sieti
|
opraviť predchádzajúci
príklad, aby boli farebné
útvary náhodne generované
len štvorcovej sieti so štvorčekom veľkosti
a
- ukážeme len pre prvý
útvar - pre ostatné
je to analogické
|
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
begin
x:=a*random(Image1.Width div a);
y:=a*random(Image1.Height div a);
g.Brush.Color:=clRed;
g.Rectangle(x,y,x+a,y+a);
end;
|
priebeh funkcie
|
program nakreslí priebeh
funkcie sinus
|
var
i:integer;
begin
g.MoveTo(0,200);
for i:=1 to Image1.Width-1 do
g.LineTo(i,round(200-150*sin(i*pi/180)));
end;
|
kružnica
|
pomocou funkcií sin
a cos a príkazov MoveTo
a LineTo nakreslite kružnicu
|
var
x,y,r,i:integer;
begin
x:=200; y:=200; r:=150;
g.MoveTo(x+r,y);
for i:=1 to 360 do
g.LineTo(x+round(r*cos(i*pi/180)),
y-round(r*sin(i*pi/180)));
end;
|
sústredné kruhy
|
nakresliť 10 sústredných
kruhov s polomermi 10, 20, 30, ... 100
- každý kruh bude vyfarbený
náhodnou farbou
|
var
i:integer;
begin
for i:=10 downto 1 do begin
g.Brush.Color:=
RGB(random(256),random(256),random(256));
g.Ellipse(250-20*i,250-20*i,250+20*i,250+20*i);
end;
end;
|
machule
|
vykresliť na obrazovku 100 kruhov náhodnej farby – obvod
aj výplň majú rovnaké, kruhy majú veľkosti 1 až 100
|
var
x,y,r,i:integer;
begin
for i:=1 to 100 do begin
g.Pen.Color:=
RGB(random(256),random(256),random(256));
g.Brush.Color:=g.Pen.Color;
x:=random(Image1.Width);
y:=random(Image1.Height);
r:=random(100)+1;
g.Ellipse(x-r,y-r,x+r,y+r);
end;
end;
|
|

 
© 2002 AB, KVI blaho@fmph.uniba.sk
|