13 Ağustos 2014 Çarşamba

C# _ ConvertStringToHex,ConvertHexToString - String-Hex,Hex-String dönüşümü

public string ConvertStringToHex(string asciiString)
{
string hex = "";
foreach (char c in asciiString)
{
int tmp = c;
hex += String.Format("{0:x2}",(uint)System.Convert.ToUInt32(tmp.ToString()));
}
return hex;
}
public string ConvertHexToString(string HexValue)
{
string StrValue = "";
while (HexValue.Length > 0)
{
StrValue += System.Convert.ToChar
System.Convert.ToUInt32(HexValue.Substring(0, 2), 16)).ToString();
HexValue = HexValue.Substring(2, HexValue.Length - 2);
}
return StrValue;
}

Yukarıda hex ifadeden string ifadeye string ifadeden hex ifadeye dönmek için kullanılan
c# kodları bulunmaktadır.

7 Ağustos 2014 Perşembe

C# Excel Formatında Kayıt

using Microsoft.Office.Interop.Excel;
//kütüphanelere eklenmesi gerekir. 
//Bu kütüphaneyi eklemeden önce add referance deyip Microsoft.Office.Interop.Excel dll dosyasını eklemek //gerekmektedir.    


 private void buttonExcelAlarmKayıtları_Click(object sender, EventArgs e)
        {
//  Microsoft.Office.Interop.Excel kütüphanesi de eklenerek datagridview üzerindeki değerlerin excel //formatına çevrilmesi

            Microsoft.Office.Interop.Excel.Application xlApp;
            Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            Int16 i, j;

            xlApp = new Microsoft.Office.Interop.Excel.Application();
            xlWorkBook = xlApp.Workbooks.Add(misValue);
            xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

//Satır ve Sutun değerlerinin toplanması
//Kaydedilecek datagrid üzerindeki değerlerin excele yazdırıldığı kısım
            for (i = 0; i <= dataGridView1.RowCount - 1; i++)
            {
                for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
                {
                    if (i == 0)
                    {
//ilk kaydedilecek satırın database başlıkları olarak kalmasını sağlar
                        xlWorkSheet.Cells[i + 1, j + 1] = dataGridView1.Columns[j].HeaderText;
                    }
                    xlWorkSheet.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();
                }
            }

//KAYIT için pencere açılması SaveFileDialog Kullanımı
// Configure savefile dlg with your stuff
            SaveFileDialog saveFileDlg = new SaveFileDialog();
// Convenient if you already have a application directory to store notes in
//Aşağıdaki yazım şekli kayıt türünü istenen formatta filtrelenmesi için kullanılmıştır.
            saveFileDlg.InitialDirectory = "%USERPROFILE%\\Documents";
            saveFileDlg.Filter = "Excel2003 File (*.xls)|*.xls|All Files (*.*)|*.*";
// it's nice to use the folder that the user has been using if any
            saveFileDlg.RestoreDirectory = true;


//KAYIT yapılmak için butona basılmış ama isim yazılmadıysa veya işlem onaylanmadıysa işlemlerin //yapılmamasını sağlar.
 // present the dialog to the user
            if (saveFileDlg.ShowDialog() == DialogResult.OK && saveFileDlg.FileName != "")
            {
                xlWorkBook.SaveAs(saveFileDlg.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();

                releaseObject(xlWorkSheet);
                releaseObject(xlWorkBook);
                releaseObject(xlApp);
                MessageBox.Show("Kayıt Başarılı");
            }
        }

8 Nisan 2014 Salı

C# form içinde form

      Bir projenin göze hitap etmesi için kullanılan bir uygulamadır.Büyük projeleriin çoğunda bu yöntem tercih edilmektedir.





C# KODU
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication15
{
    public partial class Form1 : Form
    {
        Form2 frm = new Form2();  //Öncelikle bir değişken tanımlıyoruz...

        //Yeni Form eklemek Project Menüsünden Add Windows Form'a tıklıyoruz,
        //karşımıza gelen ekranda Add diyerek yeni bir Form ekliyoruz
        //Project/Add Windows Form//Add
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
       
            frm.Show(); //Button'a tıkladığımız zaman form2'ye geçmesini sağlıyoruz
            //this.Hide(); //Form2 açıldıktan sonra FORM1'ri gizliyebiliriz.

        }
    }


}

C# ile saat uygulaması

     Öncelikle saat yapabilmek için saati yazdırabileceğimiz bir label ile bu labeldaki zaman değişimlerinin labelın tekrar yansıtılabilmesi içinde timer kullanılması gerekmektedir.


--------C# KODU---------(14/3/2014--8:53:8    "Şeklinde gösterim")
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication14
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Enabled = true;
            timer1.Interval = 1000;        
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text =DateTime.Now.Day+"/"+DateTime.Now.Month+"/"+DateTime.Now.Year+
                "--"+DateTime.Now.Hour+":"+DateTime.Now.Minute+":"+DateTime.Now.Second;      
        }
    }
}

------Yol 2 sadece timer ın kodu;
(08 Nisan 2014 Salı 10:57:14       "Şeklinde gösterim")

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString();
        }

----Yol 3 sadece timer'ın kodu;
(08.04.2014 11:03          "Şeklinde gösterim")

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.ToShortDateString() + DateTime.Now.ToShortTimeString();
        }

Özellikleri

.ToLongDateString bunu kullandığımızda tarihi uzun bir şekilde yazacaktır yol2 de olduğu gibi 
.ToShortDateString buda kısa halini verecektir.
.day, .year, .month, gün yıl veya ay kısmını verecektir.
.ToLongTimeString Zamanın uzun halini verir. ToShort da kısa halini.
.hour, .minute, .second, .milisecond zamanın saatini dakika veya saniye kısmını verir.

28 Mart 2014 Cuma

C# Chat Uygulaması


   Aşağıdaki chat uygulamasının  tek bilgisayarda gerçeklenebilmesi için 2 tane form açılmalıdır.Ip değerleri otomatik olarak gelmektedir bilgisayarın kullanmadığı herhangi iki portu seçip diğerinde de client1 kısmına yazılan port numarasını client2 ye ilkinde client2 de yazan port numarasını da client1 e yazarak send butonuna basılması sonucu bağlantı sağlanmış olacaktır.


ANA EKRAN
(Textbox isimleri ile birlikte)



Örnek Uygulama


C# Kodu

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;
using System.Net;
using System.Net.Sockets;

namespace chat
{
    public partial class Form1 : Form
    {
        Socket sck;
        EndPoint eplocal, epremote;
        public Form1()
        {
            InitializeComponent();
            sck = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
            sck.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);
            textBox1.Text = GetLocalIP();
            textBox3.Text = GetLocalIP();
        }
        private string GetLocalIP()
        {
            IPHostEntry host;
            host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily==AddressFamily.InterNetwork)
                {
                    return ip.ToString();
                }
            }
            return "127.0.0.1";
        }

        private void MessageCallBack(IAsyncResult aResult)
        {
            try
            {
                int size = sck.EndReceiveFrom(aResult,ref epremote);
                if (size>0)
                {
                    byte[] receivedData = new byte[1464];
                    receivedData = (byte[])aResult.AsyncState;
                    ASCIIEncoding eEncoding = new ASCIIEncoding();
                    string recievedMessage = eEncoding.GetString(receivedData);
                    listBox1.Items.Add("Friend:"+recievedMessage);
                }
                byte []buffer = new byte [1500];
                sck.BeginReceiveFrom(buffer,0,buffer.Length,SocketFlags.None,ref epremote, new AsyncCallback(MessageCallBack),buffer);
            }
            catch (Exception exp)
            {
               
                MessageBox.Show(exp.ToString());
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                System.Text.ASCIIEncoding enc= new System.Text.ASCIIEncoding();
                byte[] msg = new byte [1500];
                msg = enc.GetBytes(textBox5.Text);

                sck.Send(msg);
                listBox1.Items.Add("You:"+textBox5.Text);
                textBox5.Clear();
            }
            catch (Exception ex)
            {
               
                MessageBox.Show(ex.ToString());
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                eplocal = new IPEndPoint(IPAddress.Parse(textBox1.Text),Convert.ToInt32(textBox2.Text));
                sck.Bind(eplocal);
               
                epremote = new IPEndPoint(IPAddress.Parse(textBox3.Text), Convert.ToInt32(textBox4.Text));
                sck.Connect(epremote);
             
                byte[] buffer = new byte[1500];
                sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epremote, new AsyncCallback(MessageCallBack), buffer);
                button1.Text = "Connected";
                button1.Enabled = false;
                button2.Enabled = true;
                textBox5.Focus();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString()); ;
            }
        }
    }
}

23 Mart 2014 Pazar

C# Kullanıcı giriş ekranı (Login)

     Kullanıcı girişini gerçekleyebilmek için öncelikle veri tabanımızı eklememiz gerekmektedir. Veri tabanındaki kayıtlı kullanıcı adına ulaştığımız zaman giriş için onay vermelidir.Veri tabanı oluşturmak için aşağıdaki linkten yardım alabilirsiniz.




Veri tabanı oluşturma kısmına burdan bakabilirsiniz : @"http://www.youtube.com/watch?v=tcmmCcMs8yU"



C# Kodu

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;               // Bu kütüphaneyi eklemek gerekmektedir.

namespace WindowsFormsApplication8
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
      // Alttaki ConnectionString içerisindeki ifade veritabanının  yerini göstermektedir.
        SqlConnection baglan = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\kk\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30");
        private void button1_Click(object sender, EventArgs e)
        {
            Close();

        }

        private void button2_Click(object sender, EventArgs e)
        {
         
                // Boş değer girilmesini engelliyoruz.
                if (String.IsNullOrWhiteSpace(textBox1.Text) ||
                    String.IsNullOrWhiteSpace(textBox2.Text))
                {
                    MessageBox.Show("Giriş Başarısız! Eksiksiz Giriniz!", "..:: HATA ::..",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                try
                {
                    // Sql bağlantı cümlemiz.
                 
                    baglan.Open(); // Bağlantıyı aç.
                    // Sorgumuz.
                    string sql = "SELECT * FROM LOGIN WHERE USERNAME=@USERNAME AND                             PASSWORD=@PASSWORD";
                    SqlParameter prms1 = new SqlParameter("@USERNAME", textBox1.Text);
                    SqlParameter prms2 = new SqlParameter("@PASSWORD", textBox2.Text);
                    SqlCommand cmd = new SqlCommand(sql, baglan);
                    cmd.Parameters.Add(prms1);
                    cmd.Parameters.Add(prms2);
                    DataTable dt = new DataTable();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(dt);

                    if (dt.Rows.Count > 0)
                    {
                  //    Giriş gerçekleşti yaptırmak istediğiniz kodu burdan gerçekleştirebilirsiniz.
                  //    Altta yeni form açma işlemi gerçekleştirilmiştir.
                        this.Hide();
                        Form2 frm = new Form2();
                        frm.Show();
                    }
                    else
                    {
                        MessageBox.Show("Veritabanında böyle bir kullanıcı bulunamadı");
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
        }
    }
}

22 Mart 2014 Cumartesi

C# ile Histogram Eşitleme

Öncelikle histogram nedir ne işe yarar?
     Histogram bir resimdeki renk değerlerinin sayılarını gösteren grafiktir. Histogram dengeleme veya eşitleme de bir resimdeki renk değerlerinin belli bir yerde kümelenmiş olmasından kaynaklanan renk dağılımı bozukluğunu gidermek için kullanılan bir yöntemdir. Bu yöntem, her resmi iyileştirmez. Yalnızca tüm pixellerin belli araklıkta renk değerine sahip olduğu resimlerde etkilidir.

     Resim gri ve tonlarından oluşuyorsa sorun yok, ama eğer renkli bir resim üzerine bu yöntem uygulanacaksa ve RGB değerleri ile işlem yapılıyorsa o zaman rekleri ayrıştırıp, kırmızı, mavi, yeşil renklerinin her biri için ayrı ayrı histogram dengeleme yapılmalıdır.

Uygulanması :
     İlk önce resmin histogramını elde etmemiz lazım. Bunun için 256 elemanlı bir dizi tanımlayıp, resmin tüm pixellerini gezmemiz lazım. Pixelleri tararken, dizimizin her bir indisine rastlandığında o indise karşılık gelen elemanı bir arttırıyoruz. Yani yaptığımız şey, resim üzerinde 0’dan 255’e kadar olan renk değerlerini saymak. Bu iş bittikten sonra elimizde resmin histogramı bulunmuş oluyor. İstersek bunu grafiğe döküp histogramının dengeli olup olmadığını kontrol edebiliriz. Resmin çok aydınlık ya da çok parlak olduğu kabul edilirse;

     İkinci adım kümülatif (cumulative) histogramı bulmak. Kümülatif histogram, her renk değerinin, kendisinde önceki renk değerleri ile toplanmasından elde edilir. Örneğin eğer resimde 0 değerli pixel sayısı 5, 1 değerli pixel sayısı 20 ise, kümülatif histogramı içinde tutacak dizinin 1 değerine karşılık gelen elemanı 15+25=40 değerine sahip olmalı. Bu işlemi tüm değerler için (0-255) tamamladıktan sonra artık elimizde kümülatif histogram da var.
Sırada normalizasyon adımı var. Bu adımda kümülatif histogramın her değerini, resimde olmasını istediğimiz en büyük değer ile çarpıp pixel sayısına bölüyoruz. Ve sonuçta her renk değerinin normalize edilmiş rengine ulaşıyoruz. Bu adımı da tüm renk değerlerine uygulamayı ihmal etmiyoruz ve artık histogram dengeleme işini bitirmiş oluyoruz.
Son olarak dengelenmiş renkleri resmimize yansıtıyoruz. Bunun için resmin tüm pixellerini tekrar tarayıp, her pixeli, normalize edilmiş renk dizimizde, renk değerine karşılık gelen değer ile boyuyoruz.





C# Kodu 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Histogram_Eşitleme
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void dosyaAçToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            string dosyaadi = openFileDialog1.FileName;
            pictureBox1.Image =new Bitmap(dosyaadi);
        }

        private void histogramToolStripMenuItem_Click(object sender, EventArgs e)
        {
            chart1.Series.Clear();
            chart2.Series.Clear();
            chart2.Series.Add("Pixel");
            chart1.Series.Add("Pixel");
            Bitmap resim;
            resim = (Bitmap)pictureBox1.Image;
            int[] h = new int[256];
            for (int i = 0; i < pictureBox1.Width; i++)
            {
                for (int j = 0; j < pictureBox1.Height; j++)
                {
                    Color renk = resim.GetPixel(i, j);
                    int ort = (renk.R + renk.B + renk.G) / 3;
                    h[ort] = h[ort] + 1;
                }
            }
            for (int k = 0; k < 256; k++)
            {
                chart1.Series["Pixel"].Points.AddXY(k, h[k]);
            }
        }

        private void histogramEşitlemeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            chart1.Series.Clear();
            chart2.Series.Clear();
            chart2.Series.Add("Pixel");
            chart1.Series.Add("Pixel");

            Bitmap resim1 = (Bitmap)pictureBox1.Image;
            Bitmap resim2 = (Bitmap)pictureBox1.Image;

            double pixelsayisi = pictureBox1.Width * pictureBox1.Height;
            double[] hist = new double[256];
            double[] c = new double[256];

            for (int i = 0; i < pictureBox1.Width; i++)
            {
                for (int j = 0; j < pictureBox1.Height; j++)
                {
                    Color renk = resim1.GetPixel(i, j);
                    int ort = (renk.R + renk.B + renk.G) / 3;
                    hist[ort] = hist[ort] + 1;
                }
            }
            for (int l = 0; l < 256; l++)
            {
                chart1.Series["Pixel"].Points.AddXY(l, hist[l]);
            }
            for (int i = 0; i < 255; i++)
            {
                c[i] = hist[i] / pixelsayisi;
            }
            for (int i = 0; i < 256; i++)
            {
                if (i==0)
                {
                    c[i] = Math.Floor(c[i] * 255);
                }
                else
                {
                    c[i] = Math.Floor(c[i] * 255 + c[i - 1]);
                }              
            }
            for (int i = 0; i < resim1.Width; i++)
            {
                for (int j = 0; j < resim1.Height; j++)
                {
                    Color renk = resim1.GetPixel(i, j);
                    int r = renk.R;
                    int g = renk.G;
                    int b = renk.B;
                    resim2.SetPixel(i, j, Color.FromArgb(Convert.ToInt32(c[r]*255/256),                                                         Convert.ToInt32(c[g]*255/256), Convert.ToInt32(c[b]*255/256)));
                }
            }            
            pictureBox2.Image = resim2;
            int[] hist2 = new int[255];
            for (int i = 0; i < pictureBox1.Width; i++)
            {
                for (int j = 0; j < pictureBox1.Height; j++)
                {
                    Color renk = resim2.GetPixel(i, j);
                    int deger = (renk.R + renk.B + renk.G) / 3;
                    hist2[deger] = hist2[deger] + 1;
                }
            }
            for (int i = 0; i < 255; i++)
            {
                chart2.Series["Pixel"].Points.AddXY(i, hist2[i]);
            } 
        }
    }
}