Belge Yazdırma (PrintDocument, PrintSettings)

Yağız Gönüler tarafından yayınlanmıştır 13. Ağustos 2008 12:12
 

Bu namespace hakkında detaylı bilgi için şu linkleri inceleyebilirsiniz;

http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawing.asp

http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingPrinting.asp

 



PrintDocument

 

Uygulamalarımızın çıktısını yazıcıya gönderen sınıf PrintDocument sınıfıdır. Bu sınıfın metod ve özelliklerini inceleyelim.

 


Özellikler

DefaultPageSettings: Yazdırılacak sayfalardaki kenar boşlukları (margins) gibi sayfa ayarlarını ifade eder. PageSettings sınıfının bir örneğini alır ve veya döndürür.

DocumentName: Belgenin ismini temsil eder. Bu ismi, yazıcının kendi penceresini açtığımızda görünen yazdırma kuyruğundaki belgeler kısmında görebiliriz.

OriginAtMargins : “Boolean” bir değer alır. Sayfanın koordinat sisteminin başlangıç noktasını belirlemede kullanılır. Varsayılan değeri “false” olarak ayarlıdır. Yani “Graphics” sınıfı kullanılarak sayfaya bir şey yazdırıldığında, 0:0 noktası sayfanın sol üst noktasıdır. Ancak “true” olarak ayarlanırsa 0:0 noktası sayfa marjin ayarlarına göre belirlenir. Örneğin sol marjin 50, üst marjin 80 ise başlangıç noktası 50:80 koordinatları olur.

PrintController: Yazdırma işlemini kontrol eden “PrintController” sınıfının bir örneğini alır.

PrinterSettings : Yazıcı ayarlarını tutar. “PrinterSettings” sınıfının bir örneğini alır.

 

Metodlar

Print: Yazdırma işlemini başlatır.

 

Olaylar

BeginPrint : “Print” metodu çağrıldıktan hemen sonra ilk sayfanın yazdırma işlemi başlamadan önce tetiklenir. Sayfada kullanılacak “Font” vb. tanımların yapıldığı yerdir. Bu tanımları “PrintPage” içerisinde yapıp, bu olayı kullanmayabiliriz. Ancak unutmayın ki genel kural olarak döngü içlerinde değişken tanımı yapılmaz. Hata değildir ama performansı açısından sakıncalıdır. “PrintPage” olayı her sayfa yazdırılırken çağrılır. Yani 100 sayfalık bir belgede 100 defa bu olayın metodu kullanılır. Yani bir tür döngüdür. Eğer değişken tanımları (Font,Color vs.) “PrintPage” içerisinde yapılırsa aynı değişken 100 defa tanımlanmış olur. “Local” değişken olduğu için metodun işi bitince siliniyor diyebiliriz. Ancak “Garbage Collector”de ancak sistemde başka işlem yoksa çalışır, yani en iyi ihtimalle yazdırma sonlanınca çalışacaktır.

 

EndPrint: Son sayfa yazdırıldıktan sonra tetiklenir. Genelde “BeginPrint” olayı metodunda tanımlanan değişkenlerin, yok edildiği yerdir.

 

PrintPage: Bir sayfanın yazdırma işlemi başladığında tetiklenir. Yazdırılacak metin, resim ve belgelerin yazdırıldığı yer, bu olayın metodudur.

 

QueryPageSettings: Her sayfa yazdırılmadan önce tetiklenir. Sayfaların ayarlarını belirler.

 



PageSettings

 

Bir sayfanın, sayfa ayarlarını belirlemek için kullanılır.

 

Özellikler

 

Bounds: Sayfanın boyutlarını bulur. ReadOnly bir özelliktir. “Rectangle” sınıfının bir örneğini döndürür. Sayfanın yatay veya dikey olmasını dikkate alır. (Landscape özelliğinin True olarak ayarlanmasına veya ayarlanmamasına göre boyutları belirler.)

 

Color: Boolean bir değer tutar. Sayfanın renkli basılıp basılmayacağını belirler.

 

HardMarginX: Sayfanın solundaki “hard margin” boşluğunu inç/100 biriminde bulur. ReadOnly özelliktedir. Hard Margin ayarları yazıcıdan yazıcıya değişir. Yazıcılar kağıtların kenarlarındaki bazı alanlara baskı yapmazlar. Bu alanlara Hard Margin denir.

 

HardMarginY: Sayfanın üstündeki “hard margin” boşluğunu inç/100 biriminde bulur. ReadOnly bir özelliktir.

 

LandsCape: Sayfanın yatay olup olmadığını belirler.

 

Margins: Sayfanın kenar boşluklarını belirler. Margins sınıfının bir örneğini tutar. Bu sınıfın Left, Right, Top, Bottom özelliklerini kullanarak kenar boşluklarını belirleyebiliriz.

 

PaperSize: Sayfanın boyutunu tutar. “PaperSize” sınıfının bir örneğini kullanır. Bu sınıfın özellikleri şunlardır;

Height : Yükseklik

Width : Genişlik
PaperName : Kağıt tipinin ismi

Kind :”PaperKind” numaralı listesindeki değerlerden birini alır. Bunlardan birkaçı letter, lettersmall, a3, a4, a4small, a5, b4, b5, legal, tabloid’dir.

 

PaperSource : Yazıcının kağıt kaynağını belirler. “PaperSource” sınıfının bir örneğini kullanır. Bu sınıfın “Kind” özelliğini kullanarak kaynağın tipini belirtebiliriz. Bu değerler “PaperSourceKind” numaralı listesinde tutulur. Bunlardan birkaçı upper, lower, middle, manual, envelope, manualfeed’dir.

 

PrintableArea : Yazıcıya göre yazdırılacak alanı belirler. Yazıcıların genellikle sayfa kenarlarını “kesmepayı” ve “tutmapayı” diye ifade edilen kendileri için ayarladıkları alanları(hard margin) vardır. Bu kısımları yazdırma için kullanamayız.

 

PrinterResolution : Yazıcının çözünürlüğünü belirler. “PrinterResolution” sınıfının bir örneğini kullanır. Bu sınıfın 3 özelliği vardır. Bunlar;

Kind: Çözünürlük türünü belirler. PrinterResolutionKind numaralı listesini kullanır. Bu listedeki (enumeration) değerler şunlardır;

High, Medium, Low, Draft, Custom, X(Yazıcının yatay çözünürlüğünü ayarlar), Y(Yazıcının dikey çözünürlüğünü ayarlar)’dir.

 

PrinterSettings: Sayfanın yazıcı ayarlarını belirler. “PrinterSettings” sınıfının bir örneğini kullanır.

 

 

 

Şimdi bu anlattıklarımı pekiştirmek amacıyla küçük bir uygulama geliştirelim ve makalemizi sonlandıralım.

 

Yeni bir Windows projesi oluşturuyoruz. Formumuza 3 button, 1 textbox (multiline özelliği true olmalı) ve yazdırma kontrollerimizi (printdocument1, printpreviewdialog1, printdialog1, pagesetupdialog1) ekliyoruz. Görünüm aşağıdaki gibi olmalıdır;

 

 

 

 

PrintPreviewDialog1’in Document özelliğini PrintDocument1 olarak ayarlıyoruz.

PageSetupDialog1’in Document özelliğini de PrintDocument1 olarak ayarlıyoruz.

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Printing; //unutmayın

using System.Text;

using System.Windows.Forms;

 

 

namespace PrintWorks

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void btnayarlar_Click(object sender, EventArgs e)

{

this.PageSetupDialog1.ShowDialog();

PageSettings ayarlar = this.PageSetupDialog1.PageSettings;

this.PrintDocument1.DefaultPageSettings = ayarlar;

}

 

private void btnonizleme_Click(object sender, EventArgs e)

{

this.PrintPreviewDialog1.ShowDialog();

}

 

private void btnyazdir_Click(object sender, EventArgs e)

{

this.PrintDialog1.ShowDialog();

}

 

 

int toplamsayfa = 10;

int sayfano = 1;

 

private void PrintDocument1_PrintPage(object sender, PrintPageEventArgs e)

{

//yazi fontumuzu ayarliyoruz

Graphics gr = e.Graphics;

//yazi tipi arial, boyutu 30 ve bold karakterlerle yazilicak

Font f = new Font("Arial", 30, FontStyle.Bold);

//yazdirma alanimizin ozellıklerını belirliyoruz

Rectangle yazdirma_alani = new Rectangle();

yazdirma_alani.X = this.PrintDocument1.DefaultPageSettings.Margins.Left;

yazdirma_alani.Y = this.PrintDocument1.DefaultPageSettings.Margins.Top;

yazdirma_alani.Width = this.PrintDocument1.DefaultPageSettings.PaperSize.Width - this.PrintDocument1.DefaultPageSettings.Margins.Left - this.PrintDocument1.DefaultPageSettings.Margins.Right;

yazdirma_alani.Height = this.PrintDocument1.DefaultPageSettings.PaperSize.Height - this.PrintDocument1.DefaultPageSettings.Margins.Top - this.PrintDocument1.DefaultPageSettings.Margins.Bottom;

 

if (this.PrintDocument1.DefaultPageSettings.Landscape)

{

int tempwidth = yazdirma_alani.Width;

yazdirma_alani.Width = yazdirma_alani.Height;

yazdirma_alani.Height = tempwidth;

 

}

//yazdirma alaninin kenarındaki cizgilerin ozelliklerini ayarliyoruz

Pen p = new Pen(Color.Pink);

p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;

gr.DrawRectangle(p, yazdirma_alani);

gr.DrawString(this.TextBox1.Text + " : " + sayfano, f, Brushes.Black, (yazdirma_alani.X + 10), (yazdirma_alani.Y + 20));

sayfano++;

if (sayfano < toplamsayfa)

e.HasMorePages = true;

else

e.HasMorePages = false;

 

}

 

 

}

}

 

 

 

 



Uygulamamızın çalışır durumdaki önizleme görüntüsü şöyle olacaktır;

 

 

 



Ayarlar butonunun click eventindeki

 

this.PageSetupDialog1.ShowDialog();

PageSettings ayarlar = this.PageSetupDialog1.PageSettings;

this.PrintDocument1.DefaultPageSettings = ayarlar;

 

kodların sayesinde açılan sayfa ayarları penceresindeki ayarlar olduğu gibi belgemize aktarılmaktadır.

 

 

 

 

 




Bu makalemizde böylelikle sona erdi. C#.Net ile Belge yazdırmayı, PrintDocuments ve PrintSettings sınıfının özelliklerini öğrenmiş olduk.

Umarım faydalı ve işe yarar olmuştur. Farklı makalelerde tekrar görüşmek üzere, İyi çalışmalar.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Yazılım Geliştirme | Makaleler | Windows



Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Paslaş

       

Anket

Mesleğinizden arta kalan zamanınızı nelere harcıyorsunuz?







Sonuçlar

Calendar

<<  Şubat 2012  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

Yazıları geniş takvimde göster

Ne(ler) Okuyorum?


Ne Dinliyorum?

Bob Marley & The Wailers - Lively Up Yourself (3 saat önce)
Bob Marley & The Wailers - Jamming (3 saat önce)
Bob Marley & The Wailers - Is This Love (3 saat önce)
Bob Marley & The Wailers - Iron Lion Zion (3 saat önce)
Bob Marley & The Wailers - I Shot The Sheriff (3 saat önce)
Bob Marley & The Wailers - Get up,stand up (3 saat önce)
Bob Marley & The Wailers - Exodus (3 saat önce)
Bob Marley & The Wailers - Could You Be Loved (3 saat önce)
Bob Marley & The Wailers - Buffalo Soldier (3 saat önce)
Bob Marley & The Wailers - Africa Unite (3 saat önce)

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı