Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.01 KB | None | 0 0
  1. //-----------------------------------------------//
  2. //Program do symulowania efektów graficznych //
  3. //uzyskiwanych na ekranie urządzenia rastrowego //
  4. //poprzez odpowiednie adresowanie pamięci obrazu //
  5. // //
  6. //Do wykorzystania w ramach przedmiotu //
  7. //Grafika komputerowa //
  8. // //
  9. //Autor: Wojciech Sulej //
  10. //Copyright: ITA WAT //
  11. //Wersja: 1.10 //
  12. //-----------------------------------------------//
  13.  
  14. using System;
  15. using System.Collections.Generic;
  16. using System.ComponentModel;
  17. using System.Data;
  18. using System.Linq;
  19. using System.Drawing;
  20. using System.Text;
  21. using System.Windows.Forms;
  22.  
  23.  
  24. namespace Graf_kom
  25. {
  26. public partial class f_graf_kom : Form
  27. {
  28. readonly Bitmap m_obraz_w_pamieci;
  29. Bitmap m_ekran;
  30.  
  31. int L;
  32. int K;
  33. int x;
  34. int rasterX;
  35. int rasterY;
  36.  
  37. int p;
  38.  
  39. Color N;
  40.  
  41. public f_graf_kom()
  42. {
  43. InitializeComponent();
  44.  
  45. N = Color.Blue;
  46.  
  47. Bitmap im = new Bitmap("cat.bmp");
  48.  
  49. m_obraz_w_pamieci = (Bitmap)im.Clone();
  50.  
  51. L = m_obraz_w_pamieci.Height;
  52. K = m_obraz_w_pamieci.Width;
  53.  
  54. m_ekran = (Bitmap)im.Clone();
  55. }
  56.  
  57. private void MoveRaster()
  58. {
  59. if (rasterX == m_ekran.Width - 1)
  60. {
  61. rasterX = 0;
  62. if (rasterY == m_ekran.Height - 1)
  63. {
  64. rasterY = 0;
  65.  
  66. }
  67. else
  68. rasterY++;
  69. }
  70. else
  71. rasterX++;
  72. }
  73.  
  74. public void ReadPixel(int i, int j)
  75. {
  76. m_ekran.SetPixel(rasterX, rasterY, m_obraz_w_pamieci.GetPixel(i - 1, j - 1));
  77.  
  78. MoveRaster();
  79. }
  80.  
  81. public void ReadTlo(Color kolor_tla)
  82. {
  83. m_ekran.SetPixel(rasterX, rasterY, kolor_tla);
  84.  
  85. MoveRaster();
  86. }
  87.  
  88. public void SetBitMap(ref Bitmap image)
  89. {
  90. picbx_ekran.Image = image;
  91. picbx_ekran.Refresh();
  92.  
  93. lb_nr_klatki.Text = "klatka = nr" + p;
  94. }
  95.  
  96. private void Work()
  97. {
  98. if (rb_zsuwanie.Checked) Efekt1();
  99. if (rb_przewijanie.Checked) Efekt2();
  100. if (rb_rozsuwanie.Checked) Efekt3();
  101.  
  102. p++;
  103. x = p / L;
  104. if (x <= 100)
  105. progressBar1.Value = p;
  106. else
  107. progressBar1.Value = 0;
  108.  
  109. SetBitMap(ref m_ekran);
  110. }
  111. public double GetBrightness()
  112. {
  113. double sum = 0;
  114. for (int j = 0; j < L; j++)
  115. {
  116. for (int i = 0; i < K; i++)
  117. {
  118. sum += m_ekran.GetPixel(i, j).R;
  119. }
  120. }
  121. return sum / (m_ekran.Width * m_ekran.Height);
  122. }
  123. public double GetContrast(double brightness)
  124. {
  125.  
  126. double sum = 0;
  127. for (int j = 0; j < L; j++)
  128. {
  129. for (int i = 0; i < K; i++)
  130. {
  131. sum += Math.Pow(m_ekran.GetPixel(i, j).R - brightness, 2);
  132. }
  133. }
  134. sum /= (m_ekran.Width * m_ekran.Height);
  135. sum = Math.Sqrt(sum);
  136. return sum;
  137. }
  138.  
  139. private void b_load_Click(object sender, EventArgs e)
  140. {
  141. p = 0;
  142.  
  143. rasterX = 0;
  144. rasterY = 0;
  145.  
  146. picbx_pamiec_obrazu.Image = m_obraz_w_pamieci;
  147.  
  148. lb_roz_obrazu.Text = m_obraz_w_pamieci.Height.ToString() + " x " + m_obraz_w_pamieci.Width.ToString();
  149.  
  150. for (int j = 1; j <= L; j++)
  151. for (int i = 1; i <= K; i++)
  152. ReadTlo(N);
  153.  
  154. picbx_ekran.Image = m_ekran;
  155.  
  156. b_load.Enabled = false;
  157. b_reset.Enabled = true;
  158.  
  159. b_start.Enabled = true;
  160. b_stop.Enabled = false;
  161. b_kolejna_klatka.Enabled = true;
  162.  
  163. b_zmien_obraz.Enabled = true;
  164. }
  165.  
  166. private void b_reset_Click(object sender, EventArgs e)
  167. {
  168. picbx_pamiec_obrazu.Image = null;
  169. lb_roz_obrazu.Text = "0 x 0";
  170.  
  171. picbx_ekran.Image = null;
  172. lb_nr_klatki.Text = "klatka = 0";
  173.  
  174. b_load.Enabled = true;
  175. b_reset.Enabled = false;
  176.  
  177. b_start.Enabled = false;
  178. b_stop.Enabled = false;
  179. b_kolejna_klatka.Enabled = false;
  180.  
  181. b_zmien_obraz.Enabled = false;
  182. }
  183.  
  184. private void timer_automat_Tick(object sender, EventArgs e)
  185. {
  186. Work();
  187. }
  188.  
  189. private void b_start_Click(object sender, EventArgs e)
  190. {
  191. timer_automat.Enabled = true;
  192.  
  193. b_start.Enabled = false;
  194. b_stop.Enabled = true;
  195. b_kolejna_klatka.Enabled = false;
  196.  
  197. b_reset.Enabled = false;
  198. }
  199.  
  200. private void b_stop_Click(object sender, EventArgs e)
  201. {
  202. timer_automat.Enabled = false;
  203.  
  204. b_start.Enabled = true;
  205. b_stop.Enabled = false;
  206. b_kolejna_klatka.Enabled = true;
  207.  
  208. b_reset.Enabled = true;
  209.  
  210. }
  211.  
  212. private void b_kolejna_klatka_Click(object sender, EventArgs e)
  213. {
  214. Work();
  215. }
  216.  
  217. private void button1_Click(object sender, EventArgs e)
  218. {
  219. Zmien_obraz();
  220. }
  221.  
  222. private void rb_przewijanie_CheckedChanged(object sender, EventArgs e)
  223. {
  224.  
  225. }
  226.  
  227. private void label1_Click(object sender, EventArgs e)
  228. {
  229.  
  230. }
  231.  
  232. private void lb_obraz_w_pamieci_opis_Click(object sender, EventArgs e)
  233. {
  234.  
  235. }
  236.  
  237. private void progressBar1_Click(object sender, EventArgs e)
  238. {
  239.  
  240. }
  241.  
  242. private void button1_Click_1(object sender, EventArgs e)
  243. {
  244. Zadanie1A();
  245. }
  246.  
  247. private void button2_Click(object sender, EventArgs e)
  248. {
  249. Zadanie1B();
  250. }
  251.  
  252. private void button3_Click(object sender, EventArgs e)
  253. {
  254. Zadanie1C();
  255. }
  256.  
  257. private void label2_Click(object sender, EventArgs e)
  258. {
  259.  
  260. }
  261.  
  262. private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
  263. {
  264. ZmienObraz(hScrollBar1.Value);
  265.  
  266. jasnosc.Text = "jasnosc= " + GetBrightness();
  267. kontrast.Text = "kontrast= " + GetContrast(GetBrightness());
  268. pj.Text = (GetBrightness() / 255.0 * 100).ToString("0.00") + "%";
  269. pk.Text = (GetContrast(GetBrightness()) / 127.5 * 100.0).ToString("0.00") + "%";
  270. }
  271.  
  272. private void label3_Click(object sender, EventArgs e)
  273. {
  274.  
  275. }
  276.  
  277. private void textBox1_TextChanged(object sender, EventArgs e)
  278. {
  279.  
  280. }
  281.  
  282. private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)
  283. {
  284. zmienKontrast((float)(Math.Tan(hScrollBar2.Value * Math.PI / 181.0)));
  285. jasnosc.Text = "jasnosc= " + GetBrightness();
  286. kontrast.Text = "kontrast= " + GetContrast(GetBrightness());
  287. pj.Text = (GetBrightness() / 255.0 * 100).ToString("0.00") + "%";
  288. pk.Text = (GetContrast(GetBrightness()) / 127.5 * 100.0).ToString("0.00") + "%";
  289. }
  290.  
  291. private void f_graf_kom_Load(object sender, EventArgs e)
  292. {
  293.  
  294. }
  295.  
  296. private void pj_TextChanged(object sender, EventArgs e)
  297. {
  298.  
  299. }
  300.  
  301.  
  302. }
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement