Advertisement
csaki

Grafika 09_24 gyak

Sep 24th, 2013
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.16 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace Grafika_09_17 // meg 09_24
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         Graphics g;
  15.         PointF[] points;
  16.         Pen pen;
  17.         Random rand;
  18.  
  19.         // Nem teszem közzé a solutiont! Dolgozz vele legalább ennyit. :)
  20.         // - Tegyél a Formba egy ListBox controlt
  21.         // - Kattints rá a ListBox-ra
  22.         // - Jobb felső sarokban pici háromszögecskére kattins
  23.         // (- VAGY: Properties ablakban (Visual Studio jobb alsó sarka): Collections, és ott a "..." gombra katt)
  24.         // - Add hozzá azokat a sorokat, amiket szeretnél (DrawRectangle, DrawLine, DrawCurve, stb..)
  25.         // Note: mindegy mi a neve, csak arra jó, hogy tudd, melyik sor mit csinál.
  26.  
  27.         public Form1()
  28.         {
  29.             InitializeComponent();
  30.             rand = new Random();
  31.         }
  32.  
  33.         // Lefut, ha a listboxban kiválasztasz egy elemet
  34.         private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
  35.         {
  36.             // try catch blokk! Fontos!
  37.             try
  38.             {
  39.                 // System.Reflection - jelen esetben: általánosított függvényhívások
  40.                 // (Nem baj ha nem érted :D)
  41.                 string fgv = "F" + listBox1.SelectedIndex.ToString();
  42.                 this.GetType().InvokeMember(fgv, System.Reflection.BindingFlags.Default | System.Reflection.BindingFlags.InvokeMethod, null, this, new object[] { }); // Ne bántsd
  43.             }
  44.             catch
  45.             {
  46.                 MessageBox.Show("Nincs ilyen függvény definiálva!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
  47.             }
  48.         }
  49.  
  50.         public void F0() // string
  51.         {
  52.             Invalidate(); // Érvényteleníti a formot, hogy újrarajzolhassa
  53.             Update(); // Azonnal újrarajzol (a kettő együtt párban szokik járni, ha valakit bővebben érdekel, google)
  54.             //
  55.             // Mindenesetre ha nincs itt az invalidate/update, akkor ha végigmész a lista elemein,
  56.             // akkor minden elem meg fog jelenni, annyiszor  ahányszor kiválasztod a listaelemeket.
  57.             // Invalidate-el letörli az előzőket.
  58.             //
  59.             g = CreateGraphics();
  60.             // String rajzolása
  61.             g.DrawString("HELLOOO", new Font(FontFamily.GenericSansSerif, 12, FontStyle.Bold),
  62.                 new Pen(Color.Black).Brush, new PointF(200, 20));
  63.         }
  64.  
  65.         public void F1() // négyszög
  66.         {
  67.             Invalidate();
  68.             Update();
  69.             g = CreateGraphics();
  70.             // Négyszög rajzolása
  71.             g.DrawRectangle(new Pen(Color.Red), new Rectangle(200, 40, 60, 60));
  72.         }
  73.  
  74.         public void F2() // ellipszis
  75.         {
  76.             Invalidate();
  77.             Update();
  78.             g = CreateGraphics();
  79.             // Ellipszis rajzolása
  80.             g.DrawEllipse(new Pen(Color.Blue), new Rectangle(200, 70, 40, 40));
  81.         }
  82.  
  83.         public void F3() // görbe
  84.         {
  85.             Invalidate();
  86.             Update();
  87.             g = CreateGraphics();
  88.             // Antialiasing, csharp könyv 250. oldal
  89.             // (Röviden: szebb lesz az alakzat)
  90.             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
  91.  
  92.             points = new PointF[7];
  93.             for (int i = 0; i < points.Length; i++)
  94.             {
  95.                 // Random feltöltés a Form határain belül
  96.                 points[i] = new PointF(rand.Next(20, ClientSize.Width - 20), rand.Next(20, ClientSize.Height - 20));
  97.             }
  98.  
  99.             // Random szinezés (jól jöhet)
  100.             pen = new Pen(Color.FromArgb(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255)), 3);
  101.             // Görbe rajzolása (a megadott pontokon áthaladó görbe!)
  102.             g.DrawCurve(pen, points);
  103.         }
  104.         public void F4() // polygon
  105.         {
  106.             Invalidate();
  107.             Update();
  108.             g = CreateGraphics();
  109.             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
  110.  
  111.             points = new PointF[rand.Next(3,10)]; // Tényleg sokszög..
  112.             for (int i = 0; i < points.Length; i++)
  113.             {
  114.                 points[i] = new PointF(rand.Next(20, ClientSize.Width - 20), rand.Next(20, ClientSize.Height - 20));
  115.             }
  116.             // Random szinezés
  117.             pen = new Pen(Color.FromArgb(rand.Next(0, 255), rand.Next(0, 255), rand.Next(0, 255)), 5);
  118.  
  119.             // Sokszög rajzolása
  120.             g.DrawPolygon(pen, points);
  121.         }  
  122.  
  123.         // Hátravan: DrawLine, DrawLines, DrawImage, DrawPie
  124.         // HÁZI: Kérj be 4 adatot textboxokból, és hozz létre kördiagrammot! (Pie = Körcikk ---> DrawPie)
  125.         // Százalékértékeket is feljegyezni! (egyes boxokban a 4 szám összegének hány százaléka van)
  126.         // (csak mert ez fog kelleni a számításhoz)
  127.  
  128.         // Extra: kitöltött kördiagram (g.FillPie)
  129.         // Extra: Jelölés, nyilazás, hogy melyik érték micsoda
  130.        
  131.     }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement