1 Mayıs 2009 Cuma

C# ile grafik çizimi


C# ile grafik çizdeceğiz.Bu istatistiksel vs gibi durumların goruntuendiği x-y koordinat grafiği olacaktır.Uygulamamız hangi amaca hizmet ediyor dersek kendisine parametre olarak verilen Random 10 sayının göre zamana göre değişen değerinin grafiğini gösteriyor.Grafiğin iskeleti zaten basit fakat değerlere göre uzyan çubukları ve bunları birleştirmek kısmının uzerinde durabiliriz.Bunu yaparken elimizde bulunan noktaları kullanacağız.Mesela cubukların aralığı sabit olduğuiçin bir sonraki aralıkta o kadar uzunlukta bir grafik çizeriz.Sonra da bunların uz noktalarını hesaplayıp doğrularımızı çizeriz.
Kodları da verelim-->
namespace grafik_2
{
public partial class Form1 : Form
{
Random r = new Random();
Graphics g;
SolidBrush s;
int x0 = 400, y0 = 400, x1 = 700, x2 = 400, y1 = 400, y2 = 100;
Pen p;
int[] sayilar = new int[10];
int[] sirali_sayilar = new int[10];

public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();

for (int i = 0; i < 10; i++)
{
sayilar[i] = r.Next(0, 100);


}

for (int i = 0; i < 10; i++)
{

listBox1.Items.Add(sayilar[i].ToString());

}

}
public void siralama()
{
int gecici = 0;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 9; j++)
{
if (sayilar[j] > sayilar[j + 1])
{
gecici = sayilar[j];
sayilar[j] = sayilar[j + 1];
sayilar[j + 1] = gecici;
}
}
}
}
public void cizgi(int x, int y, int x1, int y1)
{
g = this.CreateGraphics();
p=new Pen(Brushes.DarkBlue,2);
g.DrawLine(p, x, y, x1, y1);
g.Dispose();
}
public void cizgi1(int x, int y, int x1, int y1)
{
g = this.CreateGraphics();
p = new Pen(Brushes.Gray, 1);
g.DrawLine(p, x, y, x1, y1);
g.Dispose();
}
public void xy()
{
g = this.CreateGraphics();
p=new Pen(Brushes.WhiteSmoke,1);
s = new SolidBrush(Color.Blue);
g.DrawString("x", this.Font, s, x1, y0+10);
g.DrawString("y", this.Font, s, x0-5, y2-20);
g.DrawRectangle(p,400,100,300,300);
for (int i = 0; i < 300; i+=30)
{
cizgi1(400, 100 + i, 700, 100 + i);
}

}
private void button1_Click(object sender, EventArgs e)
{
g = this.CreateGraphics();
g.Clear(Color.Snow);
cizgi(x0, y0, x2, y2);
cizgi(x0, y0, x1, y1);
zaman();
sayılar();
xy();
cizgim();

}
public void sayılar()
{
g = this.CreateGraphics();
s = new SolidBrush(Color.Orange);
for (int i = 0; i <= 300; i += 30)
{
g.DrawString((i/3).ToString(), this.Font, s, x0-30 , y0 -i );

}
g.Dispose();
}
public void cizgim()
{

for (int i = 0; i < 300; i += 30)
{

if (i > 0)
{
cizgi(x0 + i, y0 - (sayilar[(i / 30)-1]*3), x0 + i+30, y0 - (sayilar[((i + 30) / 30) - 1]*3));
}
if (i == 0)
{
cizgi(x0, y0, x0 + 30, y0 - (sayilar[0]*3));
}
}

}
public void tut() {
for (int i = 30; i <= 300; i += 30)
{
cizgi(x0 + i, y0 - 5, x0 + i, y0 - (sayilar[(i / 30) - 1] * 3));
}
}
public void zaman()
{
g = this.CreateGraphics();
s=new SolidBrush(Color.Blue);
for (int i = 0; i <= 300; i += 30)
{
g.DrawString(i.ToString(), this.Font, s, x0 + i - 10, y0);


}
g.Dispose();

}
private void button3_Click(object sender, EventArgs e)
{
g = this.CreateGraphics();
g.Clear(Color.Snow);
cizgi(x0, y0, x2, y2);
cizgi(x0, y0, x1, y1);
zaman();
sayılar();
xy();
}



private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
button1.PerformClick();
tut();

}
if (checkBox1.Checked == false)
{
button1.PerformClick();

}
}

}
}

Herkese kolay gelsin.

Hiç yorum yok:

Yorum Gönder