Up uzuunn süreden sonra merhaba… Windows form da panel kontrolü yazıcıdan yazdırmak için kontrolün görüntüsünü resim olarak kayıt edip, kayıt edilen o resmi yazdırabiliriz. Diğer VS kontrollerini bu şekilde yazdıra bilirmiyiz ? sorusunu soracak olursanız cevabım evet.
Örnek de panel kontrolünü kullanmamın sebebi; runtime da veya çalıştırmadan önce panel kontrolü içine eklediğimiz zamazingoları direk yazdırabilmek için kullandım. Mesela reçete programında panel içine yazdırılan ürünleri yazıcıdan çıktı almak için döngülerle dönecek yerine resim olarak alıp yazıcıdan basit bir şekilde yazdırabiliriz.
Sözü(yazıyı) fazla uzatmadan örneğe geçecek olursak. Resimdeki gibi forma; panel, button ve panel içine yazdırılması için bir kaç tane label sallayın. Buton clik olayına gelerek aşağıdaki kodları yapıştırın. Gerekli açıklamalar kodlar içinde verilmiştir.
[cc lang=’csharp’ ] private void btnYazdir_Click(object sender, EventArgs e)
{
int genislik = panel1.Size.Width;
int yukseklik = panel1.Size.Height;
using (Bitmap bmp = new Bitmap(genislik, yukseklik))
{
panel1.DrawToBitmap(bmp, new Rectangle(0, 0, genislik, yukseklik));
bmp.Save(“resim.png”, ImageFormat.Png);
}
// buraya kadar olan kısımda Panel’in resmini oluşturuyoruz.
PrintDocument prt = new PrintDocument();
prt.PrintPage += new PrintPageEventHandler(resmiYazdir);
prt.Print();
// Oluşturduğumuz resmi burada aşağıdaki metod yardımı ile yazdırıyoruz.
}
void resmiYazdir(object o, PrintPageEventArgs e)
{
System.Drawing.Image i = System.Drawing.Image.FromFile(“resim.png”);
Point p = new Point(0, 0);
e.Graphics.DrawImage(i, p);
}[/cc]
[wpdm_file id=20]
bir kaç gündür uğraştığım ve beni zorlayan bi işi iki satırlık koda dönüştürmüş bu yazınız. teşekkür etmek istedim emeğinize sağlık….
NORMALDE YAZDIRIYOR FAKAT SETUPLAYINCA GDA+ HATASI VERİYOR.