Resim Çizim Programı (Ms Paint) — C#
Anasayfa Formu
[code lang=”csharp”]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;//www.gorselprogramlama.com
using System.Windows.Forms;
namespace Resim_Cizim_Programi
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
public static int sayfaSayisi = 0; // Toplam açık çalışma sayfası
public static string sayfaBasligi = ""; // Oluşturulacak yeni sayfanın başlığı
public static Size sayfaSize = Size.Empty; // Oluşturulacak yeni sayfanın boyutu
private void yeniToolStripMenuItem_Click(object sender, EventArgs e)
{
frmNew NewForm = new frmNew(); // Yeni çalışma sayfası için bilgiler alınıyor.
NewForm.txtAdi.Text = "Çalışma Sayfası " + (sayfaSayisi + 1).ToString();
NewForm.ShowDialog();//www.gorselprogramlama.com
if (sayfaSize != Size.Empty) // Oluştur butonuna basılmadıkça forumu getirme
{
frmMDI MDIForm = new frmMDI(); // Alınan veriler ile yeni sayfalar oluşturuluyor
MDIForm.MdiParent = this;
MDIForm.Size = sayfaSize;
MDIForm.Text = sayfaBasligi;
MDIForm.Show();
sayfaSayisi++;//www.gorselprogramlama.com
}
sayfaSize = Size.Empty; // Kayıtlı veriler kullanıldıktan sonra sıfırlansın
sayfaBasligi = String.Empty;
}
private void pencereleriKapatToolStripMenuItem_Click(object sender, EventArgs e)
{
while (this.MdiChildren.Length > 0) // Tüm MDI formları teker teker kapatır.
{
this.MdiChildren[0].Close();
}
sayfaSayisi = 0;
}//www.gorselprogramlama.com
private void pencereleriKüçütToolStripMenuItem_Click(object sender, EventArgs e)
{
for (int i = 0; i < this.MdiChildren.Length; i++) // Tüm MDI Formları minimize eder.
{
this.MdiChildren[i].WindowState = FormWindowState.Minimized;
}
}
private void frmMain_Load(object sender, EventArgs e)
{
}
}//www.gorselprogramlama.com
}
[/code]
Yeni çalışma sayfası Formu
[code lang=”csharp”]
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 Resim_Cizim_Programi
{
public partial class frmNew : Form
{
public frmNew()
{
InitializeComponent();
}
//www.gorselprogramlama.com
public static int defaultSayfaDegeri = 0;
private void frmNew_Load(object sender, EventArgs e)
{
// Default olarak piksel seçeneğini seçtir
cbGenOlcu.SelectedIndex = 0;
cbYukOlcu.SelectedIndex = 0;
//this.txtAdi.Text = "Çalışma Sayfası " + defaultSayfaDegeri.ToString();
}
private void btnOlustur_Click(object sender, EventArgs e)
{
if (txtAdi.Text == "")
{
MessageBox.Show("Çalışma sayfasının adını boş geçemezsiniz.","Dikkat");
}
else if (txtGenislik.Text == "" || txtYukseklik.Text == "")
{
MessageBox.Show("Genişlik ve yükseklik değerlerini boş geçemezsiniz.","Dikkat");
}
else
{
// 1cm 18 px
int Size_X, Size_Y; // Yeni MDI form için bilgiler ana forma gönderiliyor.
if (cbGenOlcu.SelectedIndex == 0)
Size_X = Convert.ToInt32(txtGenislik.Text);
else Size_X = Convert.ToInt32(txtGenislik.Text) * 18;
if (cbYukOlcu.SelectedIndex == 0)
Size_Y = Convert.ToInt32(txtYukseklik.Text);
else Size_Y = Convert.ToInt32(txtYukseklik.Text) * 18;
frmMain.sayfaBasligi = txtAdi.Text;
frmMain.sayfaSize = new Size(Size_X, Size_Y);
this.Close();
} //www.gorselprogramlama.com
}
}
}
[/code]
çalışma sayfası Formu
[code lang=”csharp”]
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 Resim_Cizim_Programi
{
public partial class frmMDI : Form
{
public frmMDI()
{
InitializeComponent();
}
private Color Renk = new Color(); // Çizim rengi.
private float CizgiKalinligi = 0; // Çizim yapıcak kalemin çizgi kalınlığı
private Pen Kalem; // Çizim yapacağımız kalem
private Graphics Cizim; // Çizim yapıcak nesne
private Bitmap Resim; // Kayıt edilecek resim
private Point Nokta1, Nokta2; // Çizim yapılacak noktalar (arasını çizicek)
private bool CizimDurumu = false; // Çizim yapılda durumu
public static string dosyaKayitYolu = ""; // Dosyanın kayıt edileceği yol
public static bool arkaPlanResmi; // Kayıt ederken Arka planda resim görünsün mü ?
public static Color arkaPlanRengi; // Kayıt ederken Arka planda backColor özelliği
private void frmMDI_FormClosing(object sender, FormClosingEventArgs e)
{
frmMain.sayfaSayisi -= 1; // Kapanınca mevcut sayfası azalt.
}
//www.gorselprogramlama.com
private void frmMDI_Load(object sender, EventArgs e)
{
// Tüm renkleri listeye yükler.
foreach (System.Reflection.PropertyInfo prop in typeof(Color).GetProperties())
{
if (prop.PropertyType.FullName == "System.Drawing.Color")
cbColor.Items.Add(prop.Name);
}
cbColor.Text = "Black"; // Default olarak siyah rengi seç.
cbResimBoyutu.SelectedIndex = 1; // Sığdırmayı Default olarak ayarla.
cbCizgi.SelectedIndex = 2; // Default olarak 3 kalınlığını seçtirdik
Kalem = new Pen(Renk, CizgiKalinligi); // Default Kalem
pbRenk.BackColor = Color.Black; // Default Color
Resim = new Bitmap(pbCalisma.Size.Width, pbCalisma.Size.Height); // Resimin boyutu belirlendi.
Cizim = Graphics.FromImage(Resim); // İlk açılışta null olmaması için arkaplan atadık
} //www.gorselprogramlama.com
private void btnResimYukle_Click(object sender, EventArgs e)
{
if (Nokta2 != new Point(0,0)) // İkinci nokta alınırsa yani çizim yapıldıysa
{
DialogResult sonuc = MessageBox.Show("Eğer yeni bir resim yüklerseniz varolan çizimleriniz silinecektir. Yinede yüklemek ister misiniz ?", "Dikkat", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (sonuc == DialogResult.Yes) // Eğer evet denirse
{
pbCalisma.Invalidate(); // Graphics silme
btnCizim.Text = "Yeni Çizim";
CizimDurumu = false; // Çizimi Durdur
Nokta1 = new Point(0, 0); // Koordinatları sıfırla
Nokta2 = new Point(0, 0);
if (openFileDialog1.ShowDialog() == DialogResult.OK) // Resim Yükleme.
{
pbCalisma.ImageLocation = openFileDialog1.FileName;
Resim = new Bitmap(pbCalisma.ImageLocation); // picture boxtaki resimi alıyoruz
Cizim = Graphics.FromImage(Resim); // Arka plan resimini atıyoruz
}
}
}
else // ilk resim için 🙂
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) // Resim Yükleme.
{
pbCalisma.ImageLocation = openFileDialog1.FileName;
Resim = new Bitmap(pbCalisma.ImageLocation); // picture boxtaki resimi alıyoruz
Cizim = Graphics.FromImage(Resim); // Arka plan resimini atıyoruz
}
}
}
private void cbResimBoyutu_SelectedIndexChanged(object sender, EventArgs e)
{
if (Nokta2 != new Point(0,0))
{
DialogResult sonuc = MessageBox.Show("Eğer resim boyutunu değiştirirseniz varolan çizimleriniz silinecektir. Yinede değiştirmek ister misiniz ?", "Dikkat", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (sonuc == DialogResult.Yes)
{
pbCalisma.Invalidate(); // Graphics silme
btnCizim.Text = "Yeni Çizim";
CizimDurumu = false; // Çizimi Durdur
Nokta1 = new Point(0, 0); // Koordinatları sıfırla
Nokta2 = new Point(0, 0);
resimBoyutuDegistir();//www.gorselprogramlama.com
}
}
else // ilk boyutlandırma
{
resimBoyutuDegistir();
}
}
private void resimBoyutuDegistir()
{
switch (cbResimBoyutu.SelectedIndex) // Resim Boyutu değiştirme.
{
case 0: pbCalisma.SizeMode = PictureBoxSizeMode.Normal; // Normal
break;
case 1: pbCalisma.SizeMode = PictureBoxSizeMode.StretchImage; // Sığdır
break;
case 2: pbCalisma.SizeMode = PictureBoxSizeMode.AutoSize; // Otomatik
break;
case 3: pbCalisma.SizeMode = PictureBoxSizeMode.CenterImage; // Ortala
break;
case 4: pbCalisma.SizeMode = PictureBoxSizeMode.Zoom; // Yakınlaştır
break;//www.gorselprogramlama.com
}
}
private void cbColor_SelectedIndexChanged(object sender, EventArgs e)
{
Renk = Color.FromName(cbColor.SelectedItem.ToString()); // Seçili Rengi ayarla
Kalem = new Pen(Renk, CizgiKalinligi);
pbRenk.BackColor = Color.FromName(cbColor.Text);
}
private void cbCizgi_SelectedIndexChanged(object sender, EventArgs e)
{
CizgiKalinligi = float.Parse(cbCizgi.Text); // Seçili çizgi kalınlığı
Kalem = new Pen(Renk, CizgiKalinligi);//www.gorselprogramlama.com
}
private void pbCalisma_MouseClick(object sender, MouseEventArgs e)
{
if (Nokta1 == new Point(0, 0) && CizimDurumu) // İlk nokta atıldığında
{
Nokta1 = new Point(e.X, e.Y);
//Cizim = pbCalisma.CreateGraphics(); // Pb’ın üzeri çizilecek
}
else if (Nokta1 != new Point(0, 0) && CizimDurumu) // Sonraki noktalar için
{
Nokta2 = new Point(e.X, e.Y);
Cizim.DrawLine(Kalem, Nokta1, Nokta2); // İki nokta arasını çiz
Nokta1 = Nokta2;
}
pbCalisma.Image = Resim;
}
private void btnCizim_Click(object sender, EventArgs e)
{
if (btnCizim.Text == "Yeni Çizim") // Çizim Yapma Butonu
{
btnCizim.Text = "Bitir";
CizimDurumu = true; // Çizimi Başlat
}
else
{
btnCizim.Text = "Yeni Çizim";
CizimDurumu = false; // Çizimi Durdur
Nokta1 = new Point(0,0); // Koordinatları sıfırla
}
}
private void btnKaydet_Click(object sender, EventArgs e)
{
frmSave Save = new frmSave(); // Save Formu
frmSave.dosyaAdi = this.Text; // Dosya Adını Default olarak gönderdik
Save.ShowDialog(); // Formu aç
if (dosyaKayitYolu != "") // Bir dosya kayıt edilirse
{
if (arkaPlanResmi) // Arka Plan resimi kayıt edilmek istenirse
{
pbCalisma.Image.Save(dosyaKayitYolu + ".jpg");
}
else // istenmezse
{
pbCalisma.Image.Save(dosyaKayitYolu + ".jpg");
}
}//www.gorselprogramlama.com
}
private void btnCizgiSil_Click(object sender, EventArgs e)
{
DialogResult sonuc = MessageBox.Show("Çizgileri silmek istediğinize emin misiniz ?" ,"Dikkat",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if (sonuc == DialogResult.Yes) // Eğer evet denirse
{
pbCalisma.Invalidate(); // Graphicsteki çizgileri Sil
btnCizim.Text = "Yeni Çizim";
CizimDurumu = false; // Çizimi Durdur
Nokta1 = new Point(0, 0); // Koordinatları sıfırla
Nokta2 = new Point(0, 0);
}
}
}
}
[/code]
Kaydet sayfası Formu

[code lang=”csharp”]
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 Resim_Cizim_Programi
{
public partial class frmSave : Form
{
public frmSave()
{
InitializeComponent();
}
public static string dosyaAdi = ""; // Default olarak gösterilecek dosya adı
private void frmSave_Load(object sender, EventArgs e)
{
cbResim.SelectedIndex = 0; // Default olarak resim görülsün seçildi.
foreach (System.Reflection.PropertyInfo prop in typeof(Color).GetProperties()) // Tüm renkler
{
if (prop.PropertyType.FullName == "System.Drawing.Color")
cbColor.Items.Add(prop.Name);
}
cbColor.SelectedIndex = 0; // Default olarak Transparent seçildi.
//dosyaKaydet.Filter = "JPEG|*jpeg"; // Sadece JPEG olarak kayıt yapılsın
}
private void cbColor_SelectedIndexChanged(object sender, EventArgs e)
{
pbRenk.BackColor = Color.FromName(cbColor.Text); // Rengin ne olduğu yanda gösterilsin
}
//www.gorselprogramlama.com
private void btnKayit_Click(object sender, EventArgs e)
{
dosyaKaydet.FileName = dosyaAdi; // Default dosya adı alındı
if (dosyaKaydet.ShowDialog() == DialogResult.OK) // Eğer ok denirse
{
if (cbResim.SelectedIndex == 0) // Resim arka planda gösterilsin mi ?
frmMDI.arkaPlanResmi = true;
else
{
frmMDI.arkaPlanResmi = false; // Arka Planda resim görün sün mü ?
frmMDI.arkaPlanRengi = Color.FromName(cbColor.Text); // Dosyanın arka plan rengi
}
frmMDI.dosyaKayitYolu = dosyaKaydet.FileName; // Dosyanın yolu gönderiliyor
this.Close();
}
}
private void cbResim_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbResim.SelectedIndex == 0) // Arka Planda resim görünecek ise arka plan renk değiştirmeyi iptal edeliö
cbColor.Enabled = false;
else
cbColor.Enabled = true;
}//www.gorselprogramlama.com
}
}
<a href="https://www.gorselprogramlama.com/wp-content/uploads/2013/11/resim_cizim_programi6.jpg"></a><a href="https://www.gorselprogramlama.com/wp-content/uploads/2013/11/resim_cizim_programi7.jpg"></a><a href="https://www.gorselprogramlama.com/wp-content/uploads/2013/11/resim_cizim_programi8.jpg"></a><a href="https://www.gorselprogramlama.com/wp-content/uploads/2013/11/resim_cizim_programi9.jpg"></a>
[/code]







