using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BitmapSınıfı
{
public partial class Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
string
DosyaYolu = "";
Bitmap
bmp = null;
private
void button1_Click(object
sender, EventArgs e)
{
if
(opf.ShowDialog() == DialogResult.OK)
{
DosyaYolu = opf.FileName;
bmp = new
Bitmap(DosyaYolu);
pcb.Image = bmp;
}
}
private
void button2_Click(object
sender, EventArgs e)
{
if
(!backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync("SB");
}
toolStripProgressBar1.Visible = true;
}
private
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs
e)
{
switch
(e.Argument.ToString())
{
case
"SB": SiyahBeyazYap(); break;
case
"KK": KirmiziYap(); break;
default:
break;
}
}
private
void SiyahBeyazYap()
{
//Buradaki
İç içe 2 For döngümüz resim üzerinde pixel pixel gezmemizi sağlar
for
(int y = 0; y < bmp.Height; y++)
{
for
(int x = 0; x < bmp.Width; x++)
{
Color
eski = bmp.GetPixel(x, y);//X ve Y Koordinatlarındaki
Pixel'i Alır.Bu değeri Color tipinde bir değişkene atar.
int
ortalama = (eski.R + eski.G + eski.B) / 3; //Color
tipindeki değerin RGB'si ve bunların değerleri vardır bunların ortalaması alınır.
Color
yeni = Color.FromArgb(ortalama, ortalama,
ortalama);//Aldığımız ortalama değeri yeni bir renk
oluşturmak için Color tipinde bir değişkene aktarırız.
bmp.SetPixel(x, y, yeni);//son olarakda önceden değerini aldığımız X ve Y
koordinatlarındaki Pixeli Geri yükleriz.
}
}
pcb.Image = bmp;//tüm işlemler bittikten sonrada PictureBox nesmize yeni
resmimizi aktarırız.
}
private
void KirmiziYap()
{
for
(int y = 0; y < bmp.Height; y++)
{
for
(int x = 0; x < bmp.Width; x++)
{
Color
eski = bmp.GetPixel(x, y);//renk değerlerinin
ortalamasını alırsan gri tonu oluşur.
int
ortalama = (eski.R + eski.G + eski.B) / 3;
Color
yeni = Color.FromArgb(eski.A, 255, ortalama,
ortalama);
bmp.SetPixel(x, y, yeni);
}
}
pcb.Image = bmp;
}
private
void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs
e)
{
toolStripProgressBar1.Visible = false;
}
private
void Kırmızımsı_Click(object
sender, EventArgs e)
{
if
(!backgroundWorker1.IsBusy)
{
backgroundWorker1.RunWorkerAsync("KK");
}
toolStripProgressBar1.Visible = true;
}
}
}
Program ile iglili Video :
Umarım işinize yarar arkadaşlar.Okuduğunuz için teşekkürler.
form kısmına hangi nesneleri eklememiz gerekiyor ? teşekkürler şimdiden
YanıtlaSilMerhaba , yazıyı yazalı çok uzun zaman oldu, o yüzden kaynağı elimde bulunmuyor. Algoritması üzerinde durursanız istediğiniz kodları içerisinden alabilirsiniz.
Sil