using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Serialization; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Dane dane = new Dane(); private int szer = 0, wys = 0; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Close(); } private void button2_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { pictureBox1.Load(openFileDialog1.FileName); szer = pictureBox1.Image.Width; wys = pictureBox1.Image.Height; pictureBox2.Image = new Bitmap(szer, wys); } } private void openFileDialog1_FileOk_1(object sender, CancelEventArgs e) { } private void button3_Click(object sender, EventArgs e) { Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b1.GetPixel(x, y); r = k.R; g = k.G; b = k.B; b2.SetPixel(x, y, Color.FromArgb(b, g, r)); } } pictureBox2.Refresh(); } private void button4_Click(object sender, EventArgs e) { Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b1.GetPixel(x, y); r = k.R; g = k.G; b = k.B; b2.SetPixel(x, y, Color.FromArgb(g, r, b)); } } pictureBox2.Refresh(); } private void button5_Click(object sender, EventArgs e) { Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b1.GetPixel(x, y); r = k.R; g = k.G; b = k.B; b2.SetPixel(x, y, Color.FromArgb(r, b, g)); } } pictureBox2.Refresh(); } private void button7_Click(object sender, EventArgs e) { Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b1.GetPixel(x, y); r = k.R/3; g = k.G/3; b = k.B/3; int a = (r + g + b); b2.SetPixel(x, y, Color.FromArgb(a,a,a)); } } pictureBox2.Refresh(); } private void button8_Click(object sender, EventArgs e) { Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b1.GetPixel(x, y); r = (int)(k.R * 0.3); // zachodzi jawna konwersja z double na int g = (int)(k.G * 0.59) ; b = (int)(k.B * 0.11); int a = r + g + b; b2.SetPixel(x, y, Color.FromArgb(a,a,a)); } } pictureBox2.Refresh(); } private void button9_Click(object sender, EventArgs e) { Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; dane.prog = trackBar1.Value; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b1.GetPixel(x, y); r = k.R; g = k.G; b = k.B; int a = (r + g + b) / 3; if (a < dane.prog) { k = Color.Black; } else k = Color.White; b2.SetPixel(x, y, k); } } pictureBox2.Refresh(); } public void trackBar1_Scroll(object sender, EventArgs e) { label1.Text = trackBar1.Value.ToString(); } private void button10_Click(object sender, EventArgs e) { dane.prog1 = (int)numericUpDown1.Value; dane.prog2 = (int)numericUpDown2.Value; Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b1.GetPixel(x, y); r = k.R; g = k.G; b = k.B; int a = (r + g + b) / 3; if (a < dane.prog1) { k = Color.Black; } else if (a < dane.prog2 && a > dane.prog1) { k = Color.Gray; } else k = Color.White; b2.SetPixel(x, y, k); } } pictureBox2.Refresh(); } private void numericUpDown1_ValueChanged(object sender, EventArgs e) {} private void numericUpDown2_ValueChanged(object sender, EventArgs e) {} private void numericUpDown3_ValueChanged(object sender, EventArgs e) { } private void numericUpDown4_ValueChanged(object sender, EventArgs e) { } private void numericUpDown5_ValueChanged(object sender, EventArgs e) { } private void numericUpDown6_ValueChanged(object sender, EventArgs e) { } private void numericUpDown7_ValueChanged(object sender, EventArgs e) { } private void numericUpDown8_ValueChanged(object sender, EventArgs e) { } private void numericUpDown9_ValueChanged(object sender, EventArgs e) { } private void numericUpDown11_ValueChanged(object sender, EventArgs e) { } private void numericUpDown10_ValueChanged(object sender, EventArgs e) { } private void button11_Click(object sender, EventArgs e) { dane.m1 = (int)numericUpDown3.Value; dane.m2 = (int)numericUpDown4.Value; dane.m3 = (int)numericUpDown5.Value; dane.m4 = (int)numericUpDown6.Value; dane.m5 = (int)numericUpDown7.Value; dane.m6 = (int)numericUpDown8.Value; dane.m7 = (int)numericUpDown9.Value; dane.m8 = (int)numericUpDown10.Value; dane.m9 = (int)numericUpDown11.Value; int suma = dane.m1+ dane.m2+ dane.m3+ dane.m4+ dane.m5+ dane.m6+ dane.m7+ dane.m8+ dane.m9; Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k1, k2, k3, k4, k5, k6, k7, k8, k9; int r, g, b; for (int x = 1; x < szer-1; x++) { for (int y = 1; y < wys-1; y++) { k1 = b1.GetPixel(x-1, y+1); k2 = b1.GetPixel(x, y+1); k3 = b1.GetPixel(x+1, y+1); k4 = b1.GetPixel(x-1, y); k5 = b1.GetPixel(x, y); k6 = b1.GetPixel(x+1, y); k7 = b1.GetPixel(x-1, y-1); k8 = b1.GetPixel(x, y-1); k9 = b1.GetPixel(x+1, y-1); r = k1.R * dane.m1 + k2.R * dane.m2 + k3.R * dane.m3 + k4.R * dane.m4 + k5.R * dane.m5 + k6.R * dane.m6 + k7.R * dane.m7 + k8.R * dane.m8 + k9.R * dane.m9; g = k1.G * dane.m1 + k2.G * dane.m2 + k3.G * dane.m3 + k4.G * dane.m4 + k5.G * dane.m5 + k6.G * dane.m6 + k7.G * dane.m7 + k8.G * dane.m8 + k9.G * dane.m9; b = k1.B * dane.m1 + k2.B * dane.m2 + k3.B * dane.m3 + k4.B * dane.m4 + k5.B * dane.m5 + k6.B * dane.m6 + k7.B * dane.m7 + k8.B * dane.m8 + k9.B * dane.m9; if(suma != 0) r = r / suma; if (suma != 0) g = g / suma; if (suma != 0) b = b / suma; if (r > 255) r = 255; if (r < 0) r = 0; if (g > 255) g = 255; if (g < 0) g = 0; if (b > 255) b = 255; if (b < 0) b = 0; b2.SetPixel(x, y, Color.FromArgb(r,g,b)); } } pictureBox2.Refresh(); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { StreamWriter sw = new StreamWriter("dane.xml"); try { XmlSerializer serializer = new XmlSerializer(typeof(Dane)); serializer.Serialize(sw, dane); sw.Close(); } catch (Exception err) { Text = err.ToString(); } finally { sw.Close(); } } private void Form1_Load(object sender, EventArgs e) { StreamReader sr = new StreamReader("dane.xml"); try { XmlSerializer serializer = new XmlSerializer(typeof(Dane)); dane = (Dane)serializer.Deserialize(sr); trackBar1.Value = dane.prog; numericUpDown1.Value = dane.prog1; numericUpDown2.Value = dane.prog2; numericUpDown3.Value = dane.m1; numericUpDown4.Value = dane.m2; numericUpDown5.Value = dane.m3; numericUpDown6.Value = dane.m4; numericUpDown7.Value = dane.m5; numericUpDown8.Value = dane.m6; numericUpDown9.Value = dane.m7; numericUpDown10.Value = dane.m8; numericUpDown11.Value = dane.m9; } catch (Exception err) { Text = err.ToString(); } finally { sr.Close(); } } private void button6_Click(object sender, EventArgs e) { { Bitmap b1 = (Bitmap)pictureBox1.Image; Bitmap b2 = (Bitmap)pictureBox2.Image; Color k; int r, g, b; for (int x = 0; x < szer; x++) { for (int y = 0; y < wys; y++) { k = b2.GetPixel(x, y); r = k.R; g = k.G; b = k.B; b1.SetPixel(x, y, Color.FromArgb(r, g, b)); } } pictureBox1.Refresh(); } } } public class Dane { public int prog; public int prog1; public int prog2; public int m1, m2, m3, m4, m5, m6, m7, m8, m9; } }