Volkan Atasever

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve daha bir çok yazılarım...

Eski Seminerlerim ve Seminerlerimden Görüntüler

clock Eylül 20, 2008 18:15 by author Volkan Atasever

İstanbul Bilim ve Sanat Merkezindeki Seminerimden

Yazılım Geliştirme Hakkında 

 

Maltepe Üniversitesi - 6. Bilişim Günleri 

Yazılım Geliştirme Süreçleri Seminerim

                 

Yazılım Geliştirme Süreçleri

Maltepe Üni. MYO

   

C# 3.0 Semineri - Akademik Seminer

Microsoft Türkiye, İstanbul Ofisi Dikilitaş, İstanbul

MOSS 2007

Maltepe Üniversitesi - 5. Bilişim Günleri


C# 3.0

Maltepe Uni. MYO



Volkan Atasever Kimdir !

clock Eylül 20, 2008 16:33 by author Volkan Atasever

Yazılım Dünyasına BASIC ve C/C++ dili üstünde uygulamalar geliştirerek adım atan Volkan daha sonra C# ve VB.NET, Java dilleri ile uygulamalar geliştirmiştir. Bilgisayar Mühendisi olan Volkan yazılıma mühendislik metodolojileriyle yaklaşarak en verimli ve performanslı uygulamalar geliştirmeyi ilke edinmiştir. Ineta topluluklarında uzun zaman yazarlık ve editörlük yaptıktan sonra DeveloperMania.Net sitesinin topluluk lideri olmuştur. INETA UG Lead olarak çeşiti çalışmalar yapmıştır. Şu anda her an bir grupta yer almamaktadır. Microsoft'un Akademik sitesi MSAkademik.Net de VB.NET editörlüğü yapmıştır. Speaker olarak çeşitli üniversite ve eğitim merkezinde seminer vermiştir. Şu anda çeşitli firmalara eğitimler vermektedir. Microsoft'un Türkiyede 18 kişiye verdiği Sharepoint Server sertifikasını almıştır. Dünyanın en çok satan bilgisayar dergisi PCWorld'de 16 ay boyunca Mobil Programlama köşesinde yazmıştır. Ulusal Akademik Konferanslarda akademik bildiri ve makale yazarak bilime katkıda bulunmuştur. 
Yazdığı, Kasım 2010 basım tarihli Mobil Programlama kitabı ilk kitabıdır. İkinci kitabı Windows Phone 7&7.5 Programlama kitabıdır. Yeni yazılarını T3 dergisinde görebilirsiniz. Şu anda PLM Projeleri içerisinde yer almakta, PLM Proje ve Uygulama Mühendisi olarak kurumsal firmalara çözümler üretmektedir.

Ayrıntılı bilgi: http://volkanatasever.com/page/Hakkc4b1mda.aspx 



C++ ile Nesne Yönelimli Programlamaya Giriş

clock Kasım 25, 2007 08:11 by author Volkan Atasever

Bir programlama dilinin nesneye yönelik programlama dili olması için 3 kavramı içermesi gerekmektedir. Bütün nesne yönelimli programla dilleri bu 3 özelliği kapsamaktadır. Bunlar ;

-          Encapsulation (Kapsülleme)

-          Polimorfizm (Çok Biçimlilik)

-          Inheritence (Kalıtım)

Şeklinde olup kısaca kapsülleme; private,public gibi anahtar kelimeleri ile veriye nasıl erişebildiğini özetler.

Kalıtım; bir sınıfın diğer bir sınıf tarafından kalıtım işleçlerini kullanarak izin veriler üye değişkenlerine ve fonksiyonlarına erişebilmesini sağlar. Türeyen sınıf ise bambaşka bir iş yapabilir.

Polimorfizm; Çok biçimlilik diyede kaynaklarda geçmekte olup virtual ve override anahtar kelimelerinin sıkça kullanılabildiği anahtar kelimeleridir. Adında da anlaşılacağı gibi kalıtım ile aldığınız bir sınıfın bir metodu virtual ise türemiş sınıfta bunu override ederek fonksiyonun içeriğini değiştirebilmektesiniz. Başlangıç için basit bir C++ programı;

#include <iostream>

using namespace std;

int main(){

cout<<”Volkan Atasever” 

}

Bu program ekrana Volkan Atasever yazacaktır. C dilinde de aynı programı sadece cout ifadesini değiştirerek yazabiliyorduk.

SINIFLAR            Sınıflar class anahtar kelimesini kullanara deklare edilir. İleride tanıtacağımız struct yapısıda bir class’ın fonksiyon içermeyen hali olarak düşünebilirsiniz. Şimdilik bu kadarını bilmeniz yeterli.

class deneme{

 public:           

         int a;

private:           

         int b;

};

Şeklinde 2 integer üyesi olan bir sınıf tanımlamış olduk bu değişkenlerin arasındaki tek fark public ve private olarak tanımlanmış olması.

Nedir bu public ve private ?

 public değişkenler sınıfmızın üstünden her zaman erişilebilir üyyelerdir.

Private değişkenler ise kalıtım ile alınmış olsalar dahi sınıfın haricinde hiç bir yerde kullanılamazlar.deneme sınıfımızı biraz daha geliştirelim. 

class deneme{

            string ad; 

           public:

            string beni_oku();

            void beni_yaz(string isim);

};

Gördüğünüz gibi sınıfımızı yazmamıza rağmen fonksiyonlara hiçbir şey yazmadık. Sınıfımız içinde tanımladığımız bu fonksiyonlar sadece birer prototipdir. Sınıf dışında bu fonksiyonları tanımlayabiliriz.

string deneme::beni_oku(){

            cout<<”bir isim girin ve ardından enter tuşuna basınız”;

            cin>>ad;

            return ad;

}

void deneme::beni_yaz(string isim){

            cout<<isim;

}

Şeklinde tasarladığımız fonksiyonları ana yordamımızdan çağırmak gerekirse;

int main(){

            deneme obj;

            obj.beni_yaz(obj.beni_oku);

}

Şeklinde çalıştırdığımızda bizden bri isim girmemizi isteyecek ardından girdiğimiz ismi tekrar yazdıracaktır. Burada dikkat edilmesi gereken komple bir sınıf tasarladığımız ve fonksiyonlarıyla işe yarayan bir program yapmış olmamızdır.Bu programda değinmediğimiz konulara sırasıyla değinmemiz gerekirse; string bir veri tipidir. İnteger veri tipi gibi ilkel bir tiptir. Void geriye hiçbirşey döndürmeye ve bir anlamı olmayan bir anahtar kelimedir. Fonksiyonları yazış kuralımız C++ dilinin kurallarındandır. Fonksiyonlarda sınıfın içindeki veri tiplerine ismiyle erişebilirsiniz. Sınıf ismi ve kendi verdiğimiz bir isim şeklinde yazdığımız deneme obj; de ise obj rasgele verilmiş bir isimdir bu verdiğimiz isimle beraber RAM’de yer ayrılır ve sınıfımız artık bir nesne olmuştur. Bu sınıfın içindeki metodlara ise ‘.’ İşleci ile erişebiliyoruz.

            Obj.beni_yaz(obj.beni_oku); kısmındaki dikkat edilecek kısım beni_oku fonksiyonu bir string değer döndürüyor ve beni_yaz fonksiyonuda parantezler arasındada gördüğünü gibi bir string veri bekliyor. Bu kullanım tarzı ile fonksiyonlarımızn ihtiyaçlarını karşılayabildik.



C# ile Oyun Yapımı Tekniklerine Giriş

clock Haziran 18, 2007 07:44 by author Volkan Atasever

Yıllardır programcılar C,C++ veya java gibi oldukça dezavantajları olan programlama dilleri ile oyun kodlamaya çalışmaktadırlar. Bunlar arasında C yapısal bir programlama dili olduğu için programcıyı en zorlayan ve karmaşık kodlar arasında programcının kaybolmasını sağlayan bir yapıya sahiptir. C++ ve Java için aynı şeyi söylemek mümkün değilken yinede bazı dezavantajları bulunmaktadır.

            C# için ise aynı şeyi söyleyemeyeceğim. Çok kullanışlı bir dil olmasına rağmen programcılar daha çok database programlamada bu dile rağbet etmektedir. Bizim üstünde duracağımız konu ise C# ile C++ veya Java’ya nazaran daha kolay bir şekilde oyun programlama yapabileceğimizdir. Bu kolaylıklar getiren ve durmadan gelişmekte olan dilin sadece Database programlamada kullanılması biraz saçma olurdu zaten. Şu anda DirectX veya diğer SDK lar ile kolayca programlama yapabilmekteyiz. Fakat oyun programlamaya yeni başlayan biri için DirectX biraz karmaşık gelebilir. En azından hiç oyun yazmamış birinin bu mantığı programa oturtmasında zorluklarla karşılaşılabilir. Bunun içinde temel bir oyun programlama mantığı ile “oyunları nasıl programlayabiliriz ? “ soru cümlesinin üstünde durmak isterim.

           Sıradan bir Jackpot düşünün kolu çekiyorsunu ve simgeler sırayla dönüyor ve rasgele bir şekilde 3 sıralama karşımıza çıkıyor. Bu sayının 3 olması standart bir işlem olmayıp 3,4 veya 5 li kombinasyonlara görede sıralama yapabiliyoruz.

          3 sıralı bir jackpotun karmaşıklığını ele alırsak ve her bir sırada da 4 adet simgenin ardarda döndüğünü düşünürsek toplamda elimizde 4 adet simge olacaktır ve biz bu 4 simgenin 3 lü sıralanışlarını ele alacağız. Olasılığımız ise 64 olacaktır.

          Jackpot gerçek hayatta mekanik bir yapıyla hareket etmekteyken biz yazılımsal bir yöntemle yaklaşacağımız için bu mekanişk yapının mantığını kağıda aktarmamız gerekecek. Olasıklarımız 64 adet olduğuna göre ve bu 64 olasılığı tutacağımız bir dizi işimizi görecektir. Mekanik yapıda şans devredeyken yazılımsal yapıda da aynı metodu ve rasgeleliği programımıza uygulamak için randomize ifadeler işimize yarayacaktır.

         Oyun tekniğimiz bu kadar basitken görselliğimizde oyun yapımcısının ellerindedir. İster çok kötü bir kullanıcı arayüzü ile bu işi halledelim, ister Las Vegas’dan alınmış bir jackpot görünümü verelim Arka planda en iyi teknikleri kullanmış olsanızda çok kötü gözüken bir oyun hiç tutmayacaktır. . Oyunun kullanıcı arayüzü de oyun programlamada geniş bir yer tutmakta olup bu yazımız da bunu gözardı etmek durumunda kalacağız. Oyunun görünümü kullanıcının oyunun başında ne kadar kalacağı ve oynama sıklığı ile doğru orantılıdır.

       Basit bir Jackpot programlamaya kalktığımızda öncelikle ortaya koyduğumuz kombinasyonları basit bir ifade ile diziye aktarmak olacaktır. Bu olasılıklar dizisini basit bir kod parçasıyla yazmamız mantıklıyken kombinasyonları görmemiz açısından tek tek elle yazmak bizim için daha yararlı olacaktır.

        Her bir resmimize bir rakam verelim bunlar sırasıyla 0,1,2,3 olsun. Birinci resmimiz 0, ikinci resmimiz 1 , üçüncü resmimiz 2 ve son resmimiz ise 3 numaralı sayı ile temsil edilmektedir. Toplam olasılığımızı ve resimlerin değişik kombinasyonlarını 3 lü sırada yazalım;

0,2,0
 0,2,1
 0,2,1
 0,2,3
1,0,0
 1,0,1
1,0,2
1,0,3
2,0,0
 2,0,1
 2,0,2
 2,0,3
 3,0,0
3,0,1
3,0,2
3,0,3
0,1,0
0,1,1
0,1,2
0,1,3
1,1,0
1,1,1
1,1,2
1,1,3
2,1,0
2,1,1
2,1,2
2,1,3
1,2,0
 1,2,1
1,2,2
1,2,3
0,3,0
0,3,1
0,3,2
 0,3,3
 3,3,0
3,3,1
3,3,2
3,3,3
3,1,0
 3,1,1
3,1,2
3,1,3
2,2,0
2,2,1
2,2,2
2,2,3
1,3,0
1,3,1
1,3,2
1,3,3
0,2,0
 0,2,1
 0,2,2
 0,2,3
3,2,0
3,2,1
3,2,2
3,2,3
2,3,0
2,3,1
2,3,2
2,3,3

 

  Bu 4’lü gruplarımızdan toplamda 16 adet bulunmaktadır. Önemli olan ise bizim için 64 sayısıdır çünkü jackpotun kolunu çevirdiğimizde bunlardan herhangi biri karşımıza gelmektedir. Randomize bir sayı oluşturup ardından 1 ile 64 arasında bize bir rakam verirse karşımızda rasgele koluna başılmış ve gerçek hayatta jackpotun işini yani içerdiği simgelerin rasgele sırlanışını elde etmiş oluruz.

         Artık temel oyun mantığımız hazır ve sırada sadece bu mantığı kodlamak kaldı bu mantığıda kod becerimize göre bir kabiliyetle kodlayabiliriz. Oyunda 4. Resim 3 tane çıkarsa oyuncu kazanır şeklinde bir mantık eklememiz çok kolay 64 sayısını randomize komutuyla elde ettiğimiz de oyuncu kazanacaktır veya birinci resim ilk iki karede çıkarsa 3. Nolursa olsun parasının iki katını kazanması için [1,1,0][1,1,1][1,1,2][1,1,3] kombinasyonlarından birisinin gelmesi yeterlidir.

         Aslında bunun Jackpot uygulaması için zor bir yol olduğunu ve C# programlama dili ile daha basit bir yolunun olduğunuda söylemek isterim. Klasik olarak yolumuz bu şekildeyken bir Timer nesnesi işimizi dahada kolaylaştırabilir. Peki, “bu timer nesnesi nedir ve nasıl bu işi daha kolay bir şekilde yapabiliriz ? ” sorusunu C# kodumuzun üstünde açıklamak isterim.

        Öncelikle Windows projesi oluşturup basit bir kullanıcı arayüzü yapalım burada para atacağımız bir kısım, bir kol, 3 adet imagelerimizi barındıracağımız bir picturebox, 4 veya daha fazla jetonlarımız ve birde kasamızda ne kadar bulunduğunu gösteren label veya textbox ile bu işe başlayalım. Yaptığım örnek uygulamanın görüntüsü aşağıdaki gibidir;

  Öncelikle oyunumuzu hazırlamak için alanlarımızı ve metodlarımızı belirleyelim ve windows uygulamasına ekleyeceğimiz bileşenleri inceleyelim;

      4 adet timer kontrolü ekleyelim ve bir tanede imagelist kontrolü. Bu imageliste göstereceğiniz 4 adet resim ekleyin.

      Alanlarımız;

      int[] tut;

      int para = 0;

      int oyun = 0;

      Çekeceğimiz kolun ters bir görünümünü alıp form load’un da bu picturebox’ın visible özelliğini false yapmamız gerekmektedir. Böylece kolu çekteğimizde oyuncu kolun aşağıya indiğini görecektir.

      Ardından bir baslangic metodu tasarlayalım;

     private void baslangic()

    {

        int[] timrand = new int[3];

        tut = new int[3];

       for (int i = 0; i < 3; ++i)

       {

              tut[i] = 0;

       }


 

      Random rast = new Random();

      timrand[0] = rast.Next(100, 250);

      timrand[1] = rast.Next(100, 250);

      timrand[2] = rast.Next(100, 250);

      timer1.Interval = timrand[0];

      timer2.Interval = timrand[1];

      timer3.Interval = timrand[2];

      timer4.Interval = 1000;

   }


 

           Timer1,timer2,timer3 ve timer4 eklediğimiz timerların isimleri. Timrand isimli integer dizimiz ve tut isimli dizimiz 3 boyutludur. Bir döngü ile tut dizimizin bütün indislerini sıfır yapıyoruz. Rast isminde bir Random nesne nesne oluşturup 100 ile 250 arasında bir değer tutmasını istiyoruz. Randomize rakamları timrand dizilerinin indislerine sırayla atıyoruz. Timerlarımızın interval özelliğini bu rakamlarla belirliyoruz. Böylece yaşam döngüsü birbirinden farklı timerlarımız oluyor.

           Bu arada cash sistemini yapmak amacıyla Sürükle-Bırak işlemlerini pictureboxlarımızla ve textbox için yapılandırıyoruz.

         private void pictureBox5_MouseDown(object sender, MouseEventArgs e)

         {



 

                if (e.Button == MouseButtons.Left)

               {

                      pictureBox5.DoDragDrop("10", DragDropEffects.All);

                      para += 10;

                }

}


 

         Yukarıdaki sarı,kırmızı,mavi ve yeşil para görünümde kutucuklar için bu işlemi yapıyoruz. Farklı olan değerimiz sadece para+=10 işaretindeki 10 sayısı olacaktır çünkü her paranın farklı değeri olacaktır.

          DragDrop işleminde textbox için ekleyeceğimiz kod ise aşağıdaki gibidir;

private void textBox2_DragDrop(object sender, DragEventArgs e)

{

          int t;

          textBox2.Text = e.Data.GetData(DataFormats.Text).ToString();

          t = (Convert.ToInt32(textBox1.Text) - Convert.ToInt32(textBox2.Text));

          if (t =< 0)

          {

                MessageBox.Show("Not Enough Coin");

          }

         else

              textBox1.Text=t.ToString();


 

}

         Kasamızda para kalmamışsa “Not Enough Coin” hatası alacağız. Textboxın dragover event’ine ise şu kodu ekleyelim;

private void textBox2_DragOver(object sender, DragEventArgs e)

{

        if (e.KeyState == 1)

       {

               e.Effect = DragDropEffects.Copy;

         }

}

         Randomize seçtiğimiz ilk 3 timer’ın tick event’ine ise aşağıdaki kodları ekleyelim;

private void timer1_Tick(object sender, EventArgs e)

{


 

          pictureBox1.Image = ımageList1.Images[tut[0]];

          tut[0]++;

          if (tut[0] == 3)

           tut[0] = 0;

}


 

private void timer2_Tick(object sender, EventArgs e)

{

           pictureBox2.Image = ımageList1.Images[tut[1]];

           tut[1]++;

            if (tut[1] == 3)

            tut[1] = 0;

}



 

private void timer3_Tick(object sender, EventArgs e)

{

         pictureBox3.Image = ımageList1.Images[tut[2]];

         tut[2]++;

        if (tut[2] == 3)

               tut[2] = 0;

}

               Ardından çekeceğimiz kolun yani picturebox’ın üstüne çift tıklayıp aşağıdaki kodu yazalım;

private void pictureBox4_Click(object sender, EventArgs e)

{


 

          if (para != 0 & textBox2.Text!="")

          {

                 baslangic();

                 pictureBox10.Visible = true;

                 pictureBox4.Visible = false;

                    timer1.Start();

                    timer2.Start();

                    timer3.Start();

                    timer4.Start();

         }

         else

         {

                MessageBox.Show("Please Take Coin.");

          }

}

              Dikkat ederseniz ilk 3 timer’ın tick event’leri için belirli bir kod yazmıştık fakat aynısını 4. ve en önemli olan timer4 ün click evet’i için yapmadık. Çok önemli bir event ve oyunu sağlayan en önemli eventlerden biri. Kod aşağıda;

private void timer4_Tick(object sender, EventArgs e)

{

         oyun++;

          if (oyun == 8)

          {

                  timer1.Stop();

                  timer2.Stop();

                  timer3.Stop();

                  timer4.Stop();

                 if (tut[0] == 0 & tut[1] == 0 & tut[2] == 0)

                 {

                              MessageBox.Show("You WIN");

                              int temp1 = Convert.ToInt32(textBox1.Text) + (para * 10);

                              textBox1.Text = temp1.ToString();

                  }

                 else

                 {

                         MessageBox.Show("You Loose");

                  }

                pictureBox4.Visible = true;

                 pictureBox10.Visible = false;

               oyun = 0;

               para = 0;

              if (Convert.ToInt32(textBox1.Text) <= 0)

              {

                           MessageBox.Show("game over");

                          Application.Exit();

               }

          }

}

            Bundan sonra kazanca ve kayba göre her kolu çektiğimizde oyunumuzu oynayabiliyoruz. Her birisi farklı hızda dönüp farklı zamanlarda duruyorlar. Timer kontrolümüzünde önemli bir kullanımı göstermiş olduk.

            Başlangıç kısmında anlatmış olduğum olasılık ile ilgili probleminde kullanım alanları vardır mesela bu mantığı aynısını bulma oyunu için uyarlayabilirsiniz.



VB.NET ile PDF Yaratma ve İşleme

clock Şubat 20, 2007 07:59 by author Volkan Atasever

VB.NET ile 3. Parti yazılımlar kullanarak PDF yaratma, işleme ve çeşitli özelliklerle PDF dosyaları üzerinde yapılan işlemleri örnek kodlar eşliğinde anlatmaya çalışıyoruz.
---------------------------------------------------------------------------------------------------

Makalemde, sizlere VB.NET ile PDF yaratma ve PDF işleme ile ilgili bilgiler sunacağım. Projemize 3. Parti bir DLL ekleme zorunluluğumuz var bu dll’i http://www.tallcomponents.com/default.aspx?id=tallpdf3-download adresinden de çekebilirsiniz. Piyasada sınırsız bu işi yapan DLL ler varken bu firmanın dll’ini seçmemdeki amaç tamamen sınırsız kullanıma açık olmasıdır. Belli bir zaman kısıtlaması olmamasına rağmen deneme sürümü olduğunu uygulamamızda belirtiyor.

         Buna ek olarak tamamen ücretsiz zLib’i de önerebilirim bu dll ise tamamen ücretsiz TallComponents’e göre doküman eksikliği biraz var ama source’ları açık olduğu için istediğiniz atraksiyonu yapabilirsiniz. zLib içinde

http://www.componentace.com/zlib_.NET.htm adresini kullanabilirsiniz. Bu makalemde zLib örneklerine değinmeyeceğim.

Projemize referans olarak:

TallComponents.PDF.Layout.DLL dosyasını eklemeniz gerekli.

Ardından çeşitli atraksiyonları PDF üzerinde gerçekleştirebiliriz.

Bir PDF dosyası yaratmak için aşağıdaki kodu kullanabilirsiniz:



Imports System
Imports System.IO
Imports TallComponents.PDF.Layout
Imports TallComponents.PDF.Layout.Paragraphs
Namespace TallComponents.Samples.TallPDF

Public Class HelloWorld

Shared Sub Main()
  ' Using
   Dim file As FileStream = New FileStream("..\..\HelloWorld.pdf", FileMode.Create, FileAccess.Write)
   Try
                    Dim document As Document = New Document
                    Dim section As Section = document.Sections.Add
                    Dim textParagraph As TextParagraph = New TextParagraph
                    section.Paragraphs.Add(textParagraph)
                   Dim fragment As Fragment = New Fragment
                    fragment.Text = "Hello world!"
                    textParagraph.Fragments.Add(fragment)
                   document.Write(file)
       Finally
                  CType(file, IDisposable).Dispose()
       End Try
End Sub
End Class
End Namespace

Hazır bulunan bir text dosyası veya text üzerinde biçimsel işlemler yaparak PDF olarak kaydetmek çok basit metodlarla mümkün kodun açıklaması kodun içinde yapılmıştır.



Imports System
Imports System.IO
Imports TallComponents.PDF.Layout
Imports TallComponents.PDF.Layout.Paragraphs
Namespace TallComponents.Samples.TallPDF

Public Class TextFormatting
                Const text As String = "With TallPDF.NET you can create PDF documents " + "by building an instance of the TallPDF.NET Document " + "Object Model. The TallComponents team has produced " + "a DOM that is extremely intuitive and yet powerful. " + "This allows you to create both simple and complex " + "documents fast."

Shared Sub Main()
                ' Using
                 Dim file As FileStream = New FileStream("..\..\TextFormatting.pdf", FileMode.Create, FileAccess.Write)
                           Try
                                 Dim document As Document = New Document
                                 Dim section As Section = document.Sections.Add
                                 section.PageSize = PageSize.A4
                                 Dim textParagraph As TextParagraph 
                                 section.Paragraphs.Add(CreateTextParagraph("TextParagraph with default properties:")) 
                                 section.Paragraphs.Add(CreateTextParagraph(text, System.Drawing.Color.Blue))
                                 section.Paragraphs.Add(CreateTextParagraph("textParagraph.HorizontalAlignment = HorizontalAlignment.Right"))
                                textParagraph = CreateTextParagraph(text, System.Drawing.Color.Blue)
                                textParagraph.HorizontalAlignment = HorizontalAlignment.Right
                                section.Paragraphs.Add(textParagraph)
                                section.Paragraphs.Add(CreateTextParagraph("textParagraph.HorizontalAlignment = HorizontalAlignment.Center"))
                                textParagraph = CreateTextParagraph(text, System.Drawing.Color.Blue)
                                textParagraph.HorizontalAlignment = HorizontalAlignment.Center
                                section.Paragraphs.Add(textParagraph)
                                section.Paragraphs.Add(CreateTextParagraph("textParagraph.Justified = true"))
                                textParagraph = CreateTextParagraph(text, System.Drawing.Color.Blue)
                                textParagraph.Justified = True
                                section.Paragraphs.Add(textParagraph)
                                section.Paragraphs.Add(CreateTextParagraph("textParagraph.LineSpacing = 5"))
                                textParagraph = CreateTextParagraph(text, System.Drawing.Color.Blue) 
                                textParagraph.LineSpacing = 5 
                                section.Paragraphs.Add(textParagraph)
                                section.Paragraphs.Add(CreateTextParagraph("textParagraph.FirstLineIndentation = 20"))
                                textParagraph = CreateTextParagraph(text, System.Drawing.Color.Blue)
                                textParagraph.FirstLineIndentation = 20
                                section.Paragraphs.Add(textParagraph)
                                section.Paragraphs.Add(CreateTextParagraph("textParagraph.HangIndentation = 20")) 
                                textParagraph = CreateTextParagraph(text, System.Drawing.Color.Blue)
                                textParagraph.HangIndentation = 20
                                section.Paragraphs.Add(textParagraph)
                                document.Write(file)
                     Finally
                                CType(file, IDisposable).Dispose()
                     End Try
End Sub

Private Shared Function CreateTextParagraph(ByVal text As String) As TextParagraph
                      Return CreateTextParagraph(text, System.Drawing.Color.Black)
End Function

Private Shared Function CreateTextParagraph(ByVal text As String, ByVal textcolor As System.Drawing.Color) As TextParagraph
                            Dim paragraph As TextParagraph = New TextParagraph
                            Dim textFragment As Fragment = New Fragment(text)
                            textFragment.TextColor = textcolor
                            paragraph.Fragments.Add(textFragment)
                            paragraph.SpacingAfter = 10
                            Return paragraph
End Function
End Class
End Namespace


Aynı zamanda XML dosyalarınıda PDF formatına çevirebiliyoruz.
Örnek XML:
'<'document author="Volkan"'>'
'<'section pagesize="Letter"'>'
'<'!-- İçerik... --'>'
'<'/section'>'
'<'/document'>'

XML dosyamızı PDF çeviren kod bloğu,

Dim xml As XmlDocument = New XmlDocument
xml.Load("topdf.xml")
Dim document As Document = New Document
document.Read(xml.DocumentElement)
Dim file As FileStream = New FileStream("out.pdf", FileMode.Create)
document.Write(file)

Burada sayamayacağımız kadar çeşitli örneklerle kütüphane kullanımımızı ve yapacaklarımızı genişletebiliriz. Makalemin başında verdiğim linkten çektiğiniz zLib ile ilgili bir örnek yapmanın önemliliğini vurgulamak isterim her componenet değişik arayüzlerle gelmekte. Yine zLib’i referans olarak eklememiz gerekiyor.

Volkan Atasever



Volkan Atasever Kimdir ?

E-Mail: volkan(et)volkanatasever.com

Kurucu&Genel Müdür/S4G
Bilgisayar Mühendisi
Eğitmen ve Danışman
Teknoloji Yazarı

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve bir çok kategoride yazılarım...

     

Yazılım Kitaplarım

   

Şiir Kitaplarım

Ulusal Yayınlar ve Programlar

 

Sosyal Ağlarım

 

 

 

 

Retro Bilgisayar Dergimiz

Türkçe Retro Bilgisayar dergimiz haziran 2016'da ilk sayısını çıkardı.  Sizde katkıda bulunmak isterseniz bana mail atmanız yeterli. Dergimiz PDF formatında ve tamamen ücretsizdir. Software4Galaxy imtiyaz sahibidir. S4G sitesinden veya facebook sayfasından dergilere ulaşabilirsiniz.

Üye Olduğum Dernek ve Organizasyonlar

 

Yasal Bilgi

Sitedeki yazıları,kodlar ve diğer materyaller Volkan Atasever'e aittir. Yazarı ve siteyi kaynak göstererek yazıları paylaşabilirsiniz.  Copyright(c)2004-2019

Sign In

Yazılım