İster C# kullanın ister VB kullanın; .NET ortamında çizim yapmak oldukça kolay ve hızlı bir olay. .NET çatısı altında bulunan GDI+ kütüphanesi bizim için birçok çizim araçlarını içermekte. Başka bir deyişler; kare, daire, elips vb. nesnelerin çizimini oldukça kolay hale getiren bir kütüphane. Peki genel mantık nasıl işliyor.
1. Graphics (ki kendisi çizim yapmamızı sağlayan nesnedir) nesnesini hangi yüzey üzerine çizim yapacaksak o yüzeyden oluşturuyoruz.
ÖR: eğer form üzerinde çizim yapılacaksa;
Graphics graph = this.CreateGraphics();
Yada PictureBox üzerinde çizim yapılacaksa;
Graphics graph = pictureBox1.CreateGraphics();
<!–more–>
2. Çizilecek nesnelerin koordinatları ve büyüklükleri belirtilir.//Karenin çizilmeye başlayacağı nokta
Point ptSquare = new Point(10,100);
//Karenin boyutu
Size szSquare = new Size(50,50);
Form üzerinde x=10, y=100 koordinatından başlamak üzere…
Genişlik=50, yükseklik=50….
3. Çizim rengi ve kalınlığı için Pen nesnesi
//Kırmızı renkte ve kalınlığı 2 olan kalemi elimize aldık ![]()
Pen pen = new Pen(Color.Red,2);
4. Çizim fonksiyonu çağrılır
//Kareyi Çiz
graph.DrawRectangle(pen, new Rectangle(ptSquare, szSquare));
Tabiki bu kadar değişkenlerle uğraşmayalım doğrudan çizelim diyenler için de yukarıdaki çizimi şu şekilde de yapabiliriz.
graph.DrawRectangle(new Pen(Color.Red, 2), new Rectangle(10, 100, 50, 50));
Bütün kod bloğu şu şekilde:
private void btnDraw_Click(object sender, EventArgs e)
{
//Bu nesne sayesinde çizim yapabiliyoruz. Hangi yüzey üzerine çizim
yapılacaksa o nesneden Graphics nesnesi üretilmelidir.
Graphics graph = this.CreateGraphics();
//Karenin çizilmeye başlayacağı nokta
Point ptSquare = new Point(10,100);
//Karenin boyutu
Size szSquare = new Size(50,50);
//Dairenin çizilmeye başlayaağı nokta
Point ptCircle = new Point(100,100);
//Dairenin boyutu
Size szCircle = new Size(50,50);
//Elipsin çizilmeye başlayacağı nokta
Point ptEllipse= new Point(200,100);
//Elips boyutu
Size szEllipse= new Size(100,50);
//Kırmızı renkte ve kalınlığı 2 olan kalemi elimize aldık
Pen pen = new Pen(Color.Red,2);
//Kareyi Çiz
graph.DrawRectangle(pen, new Rectangle(ptSquare, szSquare));
//Daireyi Çiz
graph.DrawEllipse(pen, new Rectangle(ptCircle, szCircle));
//Elips Çiz
graph.DrawEllipse(pen, new Rectangle(ptEllipse, szEllipse));
}
Visual Studio 2008 menülerinin Türkçeleştirilmesi için CLIP aracı Web üzerinden yayınlandı.
Visual Studio 2008 menülerinin Türkçeleştirilmesi için CLIP aracı Web üzerinden yayınlandı. Visual Studio 2008′deki görsel arayüz maddelerinin yerel dildeki çevirilerini bir araç çubuğu yardımcı balonu (tooltip) veya diyalog kutusu içerisinde gösteren bir araç. Kullanıcılar görsel arayüz elemanlarının üzerinden fare ile geçerek çeviriyi anında görebiliyorlar. Ürünün 1.0 versiyonu Visual Studio IDE’sinin çoğu görsel elemanını çeviriyor. Ürün hakkında daha fazla bilgiyi buradan
http://www.microsoft.com/downloads/details.aspx?FamilyID=4e5258d2-52f4-46b8-8b74-da2dbec7c2f7&displaylang=tr
Visual Studio 2008 menülerinin Türkçeleştirilmesi için CLIP aracı Web üzerinden yayınlandı.
Visual Studio 2008 menülerinin Türkçeleştirilmesi için CLIP aracı Web üzerinden yayınlandı. Visual Studio 2008′deki görsel arayüz maddelerinin yerel dildeki çevirilerini bir araç çubuğu yardımcı balonu (tooltip) veya diyalog kutusu içerisinde gösteren bir araç. Kullanıcılar görsel arayüz elemanlarının üzerinden fare ile geçerek çeviriyi anında görebiliyorlar. Ürünün 1.0 versiyonu Visual Studio IDE’sinin çoğu görsel elemanını çeviriyor. Ürün hakkında daha fazla bilgiyi buradan
http://www.microsoft.com/downloads/details.aspx?FamilyID=4e5258d2-52f4-46b8-8b74-da2dbec7c2f7&displaylang=trDosya Okuma Yazma Islemleri
Bu yazimda dosya islemlerinden text dosyasi yazma ve okuma islemleri üzerimde duracagim. C#’ta dosya islemleri için System.IO kütüphanesi kullanilir. Bunun için öncelikle projemize bu kütüphaneyi ekliyoruz.
using System.IO;
Daha sonra formumuzu sekillendirelim. Toolbox’tan formumuza 5 button, 1 richTextBox ve 1 TextBox sürükleyip birakalim. Asagidaki gibi dizayn edelim.
Simdi butonlarin üzerinde yazan islemlerin nasil yapildigindan bahsedelim. Öncelikle butonlarin click event’lerini olusturalim.
Yazma islemi için StreamWriter sinifi kullanilir. Bunun için önce bu siniftan bir nesne olusturacagiz. StreamWriternesnesi tanimlanken string tipinde bir parametre girmemiz gerekiyor. Bu parametre üzerinde islem yapacagimiz dosyanin adresinden ve isminden olusan bir path’tir. Verilen adreste path içinde adi geçen dosya olmayabilir. Bu durumda program önce dosyayi olusturacak sonra üzerinde islem yapacaktir.
Bu programda StreamWriter sinifin yazma prosedürlerinden WriteLine prosedürünü kullanacagiz. WriteLine string tipinde bir parametreyle çalisir ve bu parametreyi dosya içinde tek bir satira yazar. Son olarak bu dosyaya ekledigimiz veriye ulasabilmek için olusturdugumuz nesneyi kapatiriz.
Okuma islemi için StreamReader sinifi kullanilir. Bunun için önce bu siniftan bir nesne olusturacagiz. StreamReadernesnesi tanimlarken string tipinde bir parametre girmemiz gerekiyor. Bu parametre üzerinde islem yapacagimiz dosyanin adresinden ve isminden olusan bir path’tir. Verilen adreste path içinde adi geçen dosya olmak zorundadir.
Bu programda StreamReader sinifin okuma prosedürlerinden ReadLine prosedürünü kullanacagiz. ReadLine, dosyayi satir satir okumak için kullanilir. Parametre istemez.
Islemi sonlandirmak için nesneyi kapatiriz.
Ekleme islemi, yazma islemine benzemektedir. Bu islem için de StreamWriter sinifini kullanilir. Aralarindaki fark tanimlamada ve uygulamada ortaya çikar. Ekleme islemini tanimlarken File.AppendText kullanilir. AppendText string tipinde bir parametre ister. Bu parametre ekleme islemi yapilacak dosyanin adresinden ve isminden olusan bir path’tir. Uygulama olarak yazma isleminden farki, dosya içinde daha önceden var olan verileri koruyarak dosyaya yeni veriler eklemesidir. Bu islemde de verilen adreste path içinde adi geçen dosya olmayabilir. Bu durumda program önce dosyayi olusturacak sonra üzerinde islem yapacaktir.
Dosyadaki tüm verileri okumak için yine StreamReader sinifi kullanilir. Burada okuma isleminden farkli olarak bir döngü kullanacagiz.
Programda okunan verileri görebilmek için richTextBox kullandik. Ilk olarak richTextBox’daki eski verileri temizledik. Verileri richTextBox’a yazarken string toplamasi yaptik. “\n” islemi ile yeni gelen verinin bir alt satirda görünmesini sagladik.
Son butonun click event’inde richTextBox’taki tüm verilerin temizlenmesi için Clear procedürünü kullandik.
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.IO;namespace Dosya_Okuma_Yazma
{public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}//Yazma Islemi
private void button1_Click(object sender, EventArgs e)
{
StreamWriter SW = new StreamWriter(”c:\\deneme.txt”);
SW.WriteLine(textBox1.Text);
SW.Close();
}//Okuma Islemi
private void button2_Click(object sender, EventArgs e)
{
StreamReader SR = new StreamReader(”c:\\deneme.txt”);
richTextBox1.Text = SR.ReadLine();
SR.Close();
}//Ekleme Islemi
private void button3_Click(object sender, EventArgs e)
{
StreamWriter SW = File.AppendText(”c:\\deneme.txt”);
SW.WriteLine(textBox1.Text);
SW.Close();
}//Dosyadaki Tüm Verileri Okuma
private void button4_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
StreamReader SR = new StreamReader(”c:\\deneme.txt”);
string metin = SR.ReadLine();
while (metin!=null)
{
richTextBox1.Text = richTextBox1.Text + “\n” + metin;
metin = SR.ReadLine();
}
}//richTextBox’i Temizleme
private void button5_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
}
}
}