< Předchozí výpisek Zpět na výpis látekNásledující výpisek >C#: Náhodná čísla a jejich histogramC#: Počítání stisknutí tlačítek myšiInformatika

C#: Přímky

Zadání:

Připravte program, který nakreslí čáru. Počátečních a koncové parametry čáry a tloušťku zadá uživatel. Program obsahuje 5 textových polí spolu s popisky, 1 panel pro kreslení a tlačítko. K překreslení čáry dojde po kliknutí na tlačítko.

Postup:

Na okno formuláře nataháme všechny potřebné prvky - textová pole (5 × Textbox), popisky (5 × Label), panel a tlačítko (Button).
Alternativní text
Nyní se dostáváme ke zdroji. Tam nás budou zajímat tři části.
1. Vykreslení úsečky.
2. Nastavení hodnot proměnných.
3. Zavedení proměnných.

Vykreslení úsečky.

Protože vykreslovat chceme na Panel, nastavíme malování do jeho události Paint. Abychom nemuseli tuto funkci hledat, stačí vědět, že u Panelu se jedná o výchozí událost, stačí proto v Designeru dvojkliknout na tento prvek.
Úsečka se vykresluje pomocí funkce DrawLine(), která má pět argumentů (vlastností, které se uzavírají do závorek za názvem funkce) - pero, X a Y počátečního bodu, X a y koncového bodu. Protože všechny tyto vlastnosti budou v průběhu programu měnit své vlastnosti, zavedeme si pro ně proměnné (pero,zacatekX,zacatekY,konecX,konecY).
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(pero,zacatekX,zacatekY,konecX,konecY);
}

Přidání hodnot proměnných

Proměnnou pero zavedeme typem Pen a funkcí new Pen(), která má dva argumenty - barvu a šířku.
Pen pero = new Pen(Color.Black, sirka_cary);
Zde jsme použili další proměnnou - sirka_cary. Její hodnotu nastavíme při události Click na Button. Tou bude vlastnost Text posledního textového pole (jeho name je textBox5). Protože šířka čáry je číslo, musíme také Text tohoto pole převést na číslo.
sirka_cary = Convert.ToInt32(textBox1.Text);
Stejným způsobem nastavíme proměnné zacatekX,zacatekY,konecX a konecY.
 private void button1_Click(object sender, EventArgs e)
 {
 zacatekX = Convert.ToInt32(textBox1.Text);
 zacatekY = Convert.ToInt32(textBox2.Text);
 konecX = Convert.ToInt32(textBox3.Text);
 konecY = Convert.ToInt32(textBox4.Text);
 sirka_cary = Convert.ToInt32(textBox5.Text);
 Refresh();
 }
Funkci Refresh() používáme, protože potřebujeme, aby se nám vždy po kliknutí na tlačítko úsečka překreslila novými hodnotami.

Zavedení proměnných

Nyní používáme proměnné, které jsme ještě nedefinovali. Tento krok, který bychom standardně udělali jako první, nyní doděláme.
Protože tyto proměnné používáme i při události Click na Button i Paint na Panel, nemůžeme tyto proměnné zavést u žádné z těchto událostí. Uděláme tak tedy ve třídě Form1 : Form:
public partial class Form1 : Form
 {
 int sirka_cary, zacatekX, zacatekY, konecX, konecY;
 public Form1()
Výsledný kód tak bude vypadat přibližně takto:
public partial class Form1 : Form
 {
 int sirka_cary, zacatekX, zacatekY, konecX, konecY;
 public Form1()
 {
  InitializeComponent();
 }

 private void textBox1_TextChanged(object sender, EventArgs e)
 {

 }

 private void panel1_Paint(object sender, PaintEventArgs e)
 {
  Pen pero = new Pen(Color.Black, sirka_cary);
  e.Graphics.DrawLine(pero,zacatekX,zacatekY,konecX,konecY);
 }

 private void button1_Click(object sender, EventArgs e)
 {
  zacatekX = Convert.ToInt32(textBox1.Text);
  zacatekY = Convert.ToInt32(textBox2.Text);
  konecX = Convert.ToInt32(textBox3.Text);
  konecY = Convert.ToInt32(textBox4.Text);
  sirka_cary = Convert.ToInt32(textBox5.Text);
  Refresh();
 }
 }




Přidal: jenikkozak 8. 11. 2009
Zobrazit podrobnosti

Podrobnosti

Počet slov: 488
Zhlédnuto: 3866 krát
< Předchozí výpisek Zpět na výpis látekNásledující výpisek >C#: Náhodná čísla a jejich histogramC#: Počítání stisknutí tlačítek myšiInformatika