Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------//
- //Program do symulowania efektów graficznych //
- //uzyskiwanych na ekranie urządzenia rastrowego //
- //poprzez odpowiednie adresowanie pamięci obrazu //
- // //
- //Do wykorzystania w ramach przedmiotu //
- //Grafika komputerowa //
- // //
- //Autor: Wojciech Sulej //
- //Copyright: ITA WAT //
- //Wersja: 1.10 //
- //-----------------------------------------------//
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Linq;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- namespace Graf_kom
- {
- public partial class f_graf_kom : Form
- {
- readonly Bitmap m_obraz_w_pamieci;
- Bitmap m_ekran;
- int L;
- int K;
- int x;
- int rasterX;
- int rasterY;
- int p;
- Color N;
- public f_graf_kom()
- {
- InitializeComponent();
- N = Color.Blue;
- Bitmap im = new Bitmap("cat.bmp");
- m_obraz_w_pamieci = (Bitmap)im.Clone();
- L = m_obraz_w_pamieci.Height;
- K = m_obraz_w_pamieci.Width;
- m_ekran = (Bitmap)im.Clone();
- }
- private void MoveRaster()
- {
- if (rasterX == m_ekran.Width - 1)
- {
- rasterX = 0;
- if (rasterY == m_ekran.Height - 1)
- {
- rasterY = 0;
- }
- else
- rasterY++;
- }
- else
- rasterX++;
- }
- public void ReadPixel(int i, int j)
- {
- m_ekran.SetPixel(rasterX, rasterY, m_obraz_w_pamieci.GetPixel(i - 1, j - 1));
- MoveRaster();
- }
- public void ReadTlo(Color kolor_tla)
- {
- m_ekran.SetPixel(rasterX, rasterY, kolor_tla);
- MoveRaster();
- }
- public void SetBitMap(ref Bitmap image)
- {
- picbx_ekran.Image = image;
- picbx_ekran.Refresh();
- lb_nr_klatki.Text = "klatka = nr" + p;
- }
- private void Work()
- {
- if (rb_zsuwanie.Checked) Efekt1();
- if (rb_przewijanie.Checked) Efekt2();
- if (rb_rozsuwanie.Checked) Efekt3();
- p++;
- x = p / L;
- if (x <= 100)
- progressBar1.Value = p;
- else
- progressBar1.Value = 0;
- SetBitMap(ref m_ekran);
- }
- public double GetBrightness()
- {
- double sum = 0;
- for (int j = 0; j < L; j++)
- {
- for (int i = 0; i < K; i++)
- {
- sum += m_ekran.GetPixel(i, j).R;
- }
- }
- return sum / (m_ekran.Width * m_ekran.Height);
- }
- public double GetContrast(double brightness)
- {
- double sum = 0;
- for (int j = 0; j < L; j++)
- {
- for (int i = 0; i < K; i++)
- {
- sum += Math.Pow(m_ekran.GetPixel(i, j).R - brightness, 2);
- }
- }
- sum /= (m_ekran.Width * m_ekran.Height);
- sum = Math.Sqrt(sum);
- return sum;
- }
- private void b_load_Click(object sender, EventArgs e)
- {
- p = 0;
- rasterX = 0;
- rasterY = 0;
- picbx_pamiec_obrazu.Image = m_obraz_w_pamieci;
- lb_roz_obrazu.Text = m_obraz_w_pamieci.Height.ToString() + " x " + m_obraz_w_pamieci.Width.ToString();
- for (int j = 1; j <= L; j++)
- for (int i = 1; i <= K; i++)
- ReadTlo(N);
- picbx_ekran.Image = m_ekran;
- b_load.Enabled = false;
- b_reset.Enabled = true;
- b_start.Enabled = true;
- b_stop.Enabled = false;
- b_kolejna_klatka.Enabled = true;
- b_zmien_obraz.Enabled = true;
- }
- private void b_reset_Click(object sender, EventArgs e)
- {
- picbx_pamiec_obrazu.Image = null;
- lb_roz_obrazu.Text = "0 x 0";
- picbx_ekran.Image = null;
- lb_nr_klatki.Text = "klatka = 0";
- b_load.Enabled = true;
- b_reset.Enabled = false;
- b_start.Enabled = false;
- b_stop.Enabled = false;
- b_kolejna_klatka.Enabled = false;
- b_zmien_obraz.Enabled = false;
- }
- private void timer_automat_Tick(object sender, EventArgs e)
- {
- Work();
- }
- private void b_start_Click(object sender, EventArgs e)
- {
- timer_automat.Enabled = true;
- b_start.Enabled = false;
- b_stop.Enabled = true;
- b_kolejna_klatka.Enabled = false;
- b_reset.Enabled = false;
- }
- private void b_stop_Click(object sender, EventArgs e)
- {
- timer_automat.Enabled = false;
- b_start.Enabled = true;
- b_stop.Enabled = false;
- b_kolejna_klatka.Enabled = true;
- b_reset.Enabled = true;
- }
- private void b_kolejna_klatka_Click(object sender, EventArgs e)
- {
- Work();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Zmien_obraz();
- }
- private void rb_przewijanie_CheckedChanged(object sender, EventArgs e)
- {
- }
- private void label1_Click(object sender, EventArgs e)
- {
- }
- private void lb_obraz_w_pamieci_opis_Click(object sender, EventArgs e)
- {
- }
- private void progressBar1_Click(object sender, EventArgs e)
- {
- }
- private void button1_Click_1(object sender, EventArgs e)
- {
- Zadanie1A();
- }
- private void button2_Click(object sender, EventArgs e)
- {
- Zadanie1B();
- }
- private void button3_Click(object sender, EventArgs e)
- {
- Zadanie1C();
- }
- private void label2_Click(object sender, EventArgs e)
- {
- }
- private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
- {
- ZmienObraz(hScrollBar1.Value);
- jasnosc.Text = "jasnosc= " + GetBrightness();
- kontrast.Text = "kontrast= " + GetContrast(GetBrightness());
- pj.Text = (GetBrightness() / 255.0 * 100).ToString("0.00") + "%";
- pk.Text = (GetContrast(GetBrightness()) / 127.5 * 100.0).ToString("0.00") + "%";
- }
- private void label3_Click(object sender, EventArgs e)
- {
- }
- private void textBox1_TextChanged(object sender, EventArgs e)
- {
- }
- private void hScrollBar2_Scroll(object sender, ScrollEventArgs e)
- {
- zmienKontrast((float)(Math.Tan(hScrollBar2.Value * Math.PI / 181.0)));
- jasnosc.Text = "jasnosc= " + GetBrightness();
- kontrast.Text = "kontrast= " + GetContrast(GetBrightness());
- pj.Text = (GetBrightness() / 255.0 * 100).ToString("0.00") + "%";
- pk.Text = (GetContrast(GetBrightness()) / 127.5 * 100.0).ToString("0.00") + "%";
- }
- private void f_graf_kom_Load(object sender, EventArgs e)
- {
- }
- private void pj_TextChanged(object sender, EventArgs e)
- {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement