Advertisement
Guest User

Untitled

a guest
Nov 25th, 2015
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.06 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.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace Spielerei
  12. {
  13. public partial class Form1 : Form
  14. {
  15. //für die Zeichenfläche
  16. Graphics zeichenflaeche;
  17. //für die Linienfarbe
  18. Color linienfarbe;
  19. //für die Hintergrundfarbe
  20. Color hintergrundfarbe;
  21.  
  22.  
  23.  
  24. //für den Linienstil
  25. System.Drawing.Drawing2D.DashStyle[] linienstil =
  26. {
  27. System.Drawing.Drawing2D.DashStyle.Dash,
  28. System.Drawing.Drawing2D.DashStyle.DashDot,
  29. System.Drawing.Drawing2D.DashStyle.DashDotDot,
  30. System.Drawing.Drawing2D.DashStyle.Dot,
  31. System.Drawing.Drawing2D.DashStyle.Solid
  32. };
  33.  
  34. //für den Hintergrund
  35. System.Drawing.Drawing2D.HatchStyle[] fuellstil =
  36. {
  37. System.Drawing.Drawing2D.HatchStyle.BackwardDiagonal,
  38. System.Drawing.Drawing2D.HatchStyle.Cross,
  39. System.Drawing.Drawing2D.HatchStyle.DottedGrid,
  40. System.Drawing.Drawing2D.HatchStyle.ForwardDiagonal,
  41. System.Drawing.Drawing2D.HatchStyle.Sphere,
  42. System.Drawing.Drawing2D.HatchStyle.Vertical,
  43. System.Drawing.Drawing2D.HatchStyle.Wave,
  44. System.Drawing.Drawing2D.HatchStyle.ZigZag
  45. };
  46.  
  47. public Form1()
  48. {
  49. InitializeComponent();
  50. }
  51.  
  52. private void Form1_Load(object sender, EventArgs e)
  53. {
  54. //die Linienfarbe ist zunächst schwarz
  55. linienfarbe = Color.Black;
  56. //und auch die Hintergrundfarbe
  57. hintergrundfarbe = Color.Black;
  58. //für die Lininenstile
  59. foreach (System.Drawing.Drawing2D.DashStyle element in linienstil)
  60. listBoxLinieStil.Items.Add("");
  61. //für den Hintergrund
  62. foreach (System.Drawing.Drawing2D.HatchStyle element in fuellstil)
  63. listBoxHintergrundMuster.Items.Add("");
  64. //eine Referenz auf die Zeichenfläche des Panels setzen
  65. //zeichenflaeche ist als Feld der Klasse Form1 vereinbart
  66. zeichenflaeche = panel1.CreateGraphics();
  67. }
  68.  
  69. private void buttonLoeschen_Click(object sender, EventArgs e)
  70. {
  71. zeichenflaeche.Clear(panel1.BackColor);
  72. }
  73.  
  74. private void buttonBeenden_Click(object sender, EventArgs e)
  75. {
  76. Close();
  77. }
  78.  
  79. private void buttonStart_Click(object sender, EventArgs e)
  80. {
  81.  
  82. //Durchläufe zählen
  83. int durchlauf = 0;
  84. //Wiederholungen
  85. int wiederholungen = (int)(numericUpDownWiederholungen.Value);
  86. //differenz
  87. int differenz = 0;
  88. //vergrößerungen
  89. int schritte;
  90.  
  91.  
  92. //eine lokale Variable für die Größe
  93. int groesse = 0;
  94. //einen Stift mit der ausgewählten Farbe erzeugen
  95. Pen stift = new Pen(linienfarbe);
  96. //einen Pinsel in der ausgewählten Farbe erzeugen
  97. SolidBrush pinsel = new SolidBrush(hintergrundfarbe);
  98. //die Dicke des Stiftes setzen
  99. stift.Width = Convert.ToInt32(numericUpDownLinieStaerke.Value);
  100. //die Größe der Figur ermitteln
  101. switch (trackBar1.Value)
  102. {
  103. case 1: groesse = 125;
  104. break;
  105. case 2: groesse = 100;
  106. break;
  107. case 3: groesse = 75;
  108. break;
  109. }
  110. //den Linienstil ermitteln
  111. if (listBoxLinieStil.SelectedIndex >= 0)
  112. stift.DashStyle = linienstil[listBoxLinieStil.SelectedIndex];
  113. //Figur ermitteln
  114. //beim Kreis und beim Rechteck auch die Füllung überprüfen
  115. if (radioButtonKreis.Checked == true)
  116. {
  117. if (radioButtonHintergrundOhne.Checked == true)
  118. zeichenflaeche.DrawEllipse(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  119. if (radioButtonHintergrundFarbe.Checked == true)
  120. zeichenflaeche.FillEllipse(pinsel, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  121.  
  122.  
  123.  
  124.  
  125. //Kreis-Animation
  126. if (radioButtonAnimation.Checked == true)
  127.  
  128. differenz = 300 - groesse;
  129. schritte = (int)(differenz / numericUpDownWiederholungen.Value);
  130. timer1.Start();
  131.  
  132. do
  133. {
  134.  
  135. zeichenflaeche.Clear(panel1.BackColor);
  136. zeichenflaeche.DrawEllipse(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  137. //System.Threading.Thread.Sleep(500);
  138. groesse = groesse + schritte;
  139. durchlauf = durchlauf + 1;
  140. wiederholungen = wiederholungen - 1;
  141.  
  142. } while (wiederholungen != 0);
  143.  
  144. //sobald größe erreicht
  145. if (wiederholungen == 0)
  146. do
  147. {
  148. zeichenflaeche.Clear(panel1.BackColor);
  149. zeichenflaeche.DrawEllipse(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  150. //System.Threading.Thread.Sleep(500);
  151. groesse = groesse - schritte;
  152. durchlauf = durchlauf - 1;
  153.  
  154. } while (durchlauf >= 0);
  155.  
  156.  
  157.  
  158. //soll mit Muster gezeichnet werden und ist ein Muster ausgewählt?
  159. if (radioButtonHintergrundMuster.Checked == true && listBoxHintergrundMuster.SelectedIndex >= 0)
  160. {
  161. //einen neuen Pinsel für das Muster erzeugen
  162. //die Vordergrundfarbe kommt vom Stift, der Hintergrund ist immer weiß
  163. System.Drawing.Drawing2D.HatchBrush musterPinsel = new System.Drawing.Drawing2D.HatchBrush(fuellstil[listBoxHintergrundMuster.SelectedIndex], stift.Color, Color.White);
  164. zeichenflaeche.FillEllipse(musterPinsel, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  165. }
  166.  
  167. }
  168. if (radioButtonRechteck.Checked == true)
  169. {
  170. if (radioButtonHintergrundOhne.Checked == true)
  171. zeichenflaeche.DrawRectangle(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  172. if (radioButtonHintergrundFarbe.Checked == true)
  173. zeichenflaeche.FillRectangle(pinsel, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  174. //soll mit Muster gezeichnet werden und ist ein Muster ausgewählt?
  175. if (radioButtonHintergrundMuster.Checked == true && listBoxHintergrundMuster.SelectedIndex >= 0)
  176. {
  177. //einen neuen Pinsel für das Muster erzeugen
  178. //die Vordergrundfarbe kommt vom Stift, der Hintergrund ist immer weiß
  179. System.Drawing.Drawing2D.HatchBrush musterPinsel = new System.Drawing.Drawing2D.HatchBrush(fuellstil[listBoxHintergrundMuster.SelectedIndex], stift.Color, Color.White);
  180. zeichenflaeche.FillRectangle(musterPinsel, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  181. }
  182.  
  183. //Rechteck-Animation
  184. if (radioButtonAnimation.Checked == true)
  185.  
  186. differenz = 300 - groesse;
  187. schritte = (int)(differenz / numericUpDownWiederholungen.Value);
  188. timer1.Start();
  189.  
  190. do
  191. {
  192.  
  193. zeichenflaeche.Clear(panel1.BackColor);
  194. zeichenflaeche.DrawRectangle(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  195. //System.Threading.Thread.Sleep(500);
  196. groesse = groesse + schritte;
  197. durchlauf = durchlauf + 1;
  198. wiederholungen = wiederholungen - 1;
  199.  
  200. } while (wiederholungen != 0);
  201.  
  202. //sobald größe erreicht
  203. if (wiederholungen == 0)
  204. do
  205. {
  206. zeichenflaeche.Clear(panel1.BackColor);
  207. zeichenflaeche.DrawRectangle(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  208. //System.Threading.Thread.Sleep(500);
  209. groesse = groesse - schritte;
  210. durchlauf = durchlauf - 1;
  211.  
  212. } while (durchlauf >= 0);
  213.  
  214.  
  215.  
  216. }
  217.  
  218.  
  219.  
  220. if (radioButtonLinie.Checked == true)
  221. {
  222. if (radioButtonHintergrundOhne.Checked == true)
  223. zeichenflaeche.DrawLine(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Height / 2, panel1.ClientRectangle.Width - groesse, panel1.ClientRectangle.Height / 2);
  224.  
  225.  
  226.  
  227. //Linien-Animation
  228. /* if (radioButtonAnimation.Checked == true)
  229.  
  230. differenz = 300 - groesse;
  231. schritte = (int)(differenz / numericUpDownWiederholungen.Value);
  232. timer1.Start();
  233. zeichenflaeche.DrawLine(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Height / 2, panel1.ClientRectangle.Width - groesse, panel1.ClientRectangle.Height / 2);
  234. do
  235. {
  236.  
  237. zeichenflaeche.Clear(panel1.BackColor);
  238. zeichenflaeche.DrawLine(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Height / 2, panel1.ClientRectangle.Width - groesse , panel1.ClientRectangle.Height / 2);
  239.  
  240. //System.Threading.Thread.Sleep(500);
  241. groesse = groesse + schritte;
  242. durchlauf = durchlauf + 1;
  243. wiederholungen = wiederholungen - 1;
  244. // zeichenflaeche.DrawRectangle(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Top + groesse, panel1.ClientRectangle.Width - (groesse * 2), panel1.ClientRectangle.Height - (groesse * 2));
  245.  
  246.  
  247. } while (wiederholungen != 0);
  248.  
  249. //sobald größe erreicht
  250. /*if (wiederholungen == 0)
  251. do
  252. {
  253. zeichenflaeche.Clear(panel1.BackColor);
  254. zeichenflaeche.DrawLine(stift, panel1.ClientRectangle.Left + groesse, panel1.ClientRectangle.Height / 2, panel1.ClientRectangle.Width - groesse, panel1.ClientRectangle.Height / 2);
  255. //System.Threading.Thread.Sleep(500);
  256. groesse = groesse - schritte;
  257. durchlauf = durchlauf - 1;
  258.  
  259. } while (durchlauf >= 0);
  260.  
  261. */ }
  262. }
  263.  
  264.  
  265.  
  266.  
  267. private void buttonLinienFarbe_Click(object sender, EventArgs e)
  268. {
  269. //den Dialog zur Farbauswahl anzeigen
  270. if (colorDialog1.ShowDialog() == DialogResult.OK)
  271. {
  272. //die Hintergrundfarbe für das Panel auf die ausgewählte Farbe setzen
  273. panelLinienFarbeVorschau.BackColor = colorDialog1.Color;
  274. //und die Linienfarbe
  275. //linienfarbe ist ein Feld der Klasse Form1
  276. linienfarbe = colorDialog1.Color;
  277. }
  278. }
  279.  
  280. private void buttonHintergrundFarbe_Click(object sender, EventArgs e)
  281. {
  282. //den Dialog zur Farbauswahl anzeigen
  283. if (colorDialog1.ShowDialog() == DialogResult.OK)
  284. {
  285. //die Hintergrundfarbe für das Panel auf die ausgewählte Farbe setzen
  286. panelHintergrundFarbeVorschau.BackColor = colorDialog1.Color;
  287. //und die eigentliche Hintergrundfarbe
  288. //hintergrundfarbe ist ein Feld der Klasse Form1
  289. hintergrundfarbe = colorDialog1.Color;
  290. //die Auswahl Farbe aktivieren
  291. radioButtonHintergrundFarbe.Checked = true;
  292. }
  293. }
  294.  
  295. private void listBoxLinieStil_DrawItem(object sender, DrawItemEventArgs e)
  296. {
  297. //eine lokale Variable für die Berechnung der Mitte
  298. int y;
  299. //ein neuer lokaler Stift
  300. Pen boxStift = new Pen(Color.Black);
  301. //die Mitte berechnen
  302. y = (e.Bounds.Top + e.Bounds.Bottom) / 2;
  303. //den Hintergrund zeichnen
  304. e.DrawBackground();
  305. //und die Linie
  306. boxStift.DashStyle = linienstil[e.Index];
  307. e.Graphics.DrawLine(boxStift, e.Bounds.Left + 1, y, e.Bounds.Right - 1, y);
  308. }
  309.  
  310. private void listBoxHintergrundMuster_DrawItem(object sender, DrawItemEventArgs e)
  311. {
  312. //ein neuer lokaler Pinsel für das Muster
  313. System.Drawing.Drawing2D.HatchBrush boxPinsel = new System.Drawing.Drawing2D.HatchBrush(fuellstil[e.Index], Color.Black, Color.White);
  314. //den Hintergrund zeichnen
  315. e.DrawBackground();
  316. //und das Rechteck
  317. e.Graphics.FillRectangle(boxPinsel, e.Bounds.Left + 1, e.Bounds.Top + 1, e.Bounds.Width - 1, e.Bounds.Height - 1);
  318. }
  319.  
  320.  
  321. //timer
  322. /* private void timer1_Tick(object sender, EventArgs e)
  323. {
  324. timer1.Interval = (int)(numericUpDownAnimation.Value*1000);
  325. if (radioButtonAnimation.Checked == true)
  326. {
  327. timer1.Start();
  328. }
  329. else
  330. {
  331. timer1.Stop();
  332. }
  333. }
  334.  
  335. */
  336. private void timer1_Tick(object sender, EventArgs e)
  337. {
  338. timer1.Interval = (int)(numericUpDownAnimation.Value * 1000);
  339. }
  340. }
  341. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement