< Předchozí výpisek Zpět na výpis látekNásledující výpisek >C#: OpakováníC#: Mocniny cyklemInformatika

C#: Soustředné kružnice

Zadání

Vytvořte program, který pomocí cyklu vykreslí 10 soustředných kružnic, které se budou lišit tím, že každá kružnice bude mít o 20 pixelů menší průměr.

Postup

Vykreslení bude probíhat v události Paint programu. Použijeme k tomu strukturu for, která má tři řídící příkazy: 1. se provede právě jednou před zahájením cyklu, 2. je vyhodnocován před každým provedením těla cyklu, 3. je vykonán po každém dokončení těla cyklu. Tyto příkazy jsou odděleny středníky a jakýkoli z nich je možné vynechat, středníky se ale píší i v tomto případě.

Pro namalování kružnic potřebujeme znát x a y souřadnice počátku, šířku a délku elipsy. Protože se jedná o kružnici, můžeme sjednotit výšku a šířku, a také x i y souřadnice. Ještě si uvědomíme, že souřadnice elipsy udávají horní levý roh pomyslného obdélníka, kterému je tato elipsa vepsána.

V prvním výrazu definujeme souřadnice a šířku.
Ve třetím výrazu nastavíme, že souřadnice se bude po každém průběhu cyklu zmenšovat o 5 pixelů (x-=5)
Do druhého výrazu nastavíme, že cyklus bude probíhat do té doby, než bude souřadnice nulová.

Do těla struktury for uvedeme, že chceme namalovat černou elipsu, která má stejnou x a y souřadnici a totožnou šířku i výšku, poté velikost šířky zvýšíme o 20 px.

Výsledek

 private void Form1_Paint(object sender, PaintEventArgs e)
 {
  for (int x = 100,šířka=10; x >= 0; x-=10)
  {
  e.Graphics.DrawEllipse(Pens.Black,x,x,šířka,šířka);
  šířka += 20;
  }
 }

Jiné řešení

Pokud by nám příkaz for s měnícími se souřadnicemi přišel nepochopitelný, můžeme si zavést další proměnnou i, která bude obsahovat počet provedení cyklu. Na začátku se bude rovnat deseti, při každém běhu cyklu se sníží o 1 do té doby, než bude menší nebo rovna nule.

private void Form1_Paint(object sender, PaintEventArgs e)
 {
  int i,šířka,x;
  x = 100;
  šířka = 10;

  for (i=10; i >= 0; --i)
  {
  e.Graphics.DrawEllipse(Pens.Black,x,x,šířka,šířka);
  šířka += 20;
  x -= 10;
  }
 }



Přidal: jenikkozak 17. 1. 2010
Zobrazit podrobnosti

Podrobnosti

Počet slov: 309
Zhlédnuto: 3880 krát