Ekim 2009 Tarihindeki Makaleler


Sapanca Gezisi

Tayfa Entertainment olarak bir gezimizi daha başarıyla bitirmiş bulunuyoruz. Bu sefer durağımız Sapanca oldu. Tabi gidilecek yer Sapanca olunca trensiz olur mu? Zevkli bir tren yolculuğu oldu tayfayla. Sapanca’da mutlaka yapılması gerek iki şeyi ise şöyle sıralayayım : Göl üzerinde deniz bisikleti kullanma ve güveçte alabalık yeme.

Bu organizasyonumuza katılan tayfa üyeleri Ezgi, Mehmet, Cenker, Seda, Merve ve tabi ki ben çok çok eğlendik. Yorgunuz ama mutluyuz huzurluyuz =) Size de mutlaka Sapanca’ya gitmenizi tavsiye ederim.

Sapanca GarıSapancaya DoğruSapanca'da Mutlu Son

Not: Biricik annemin hazırladığı yolluklar sanırım herkes için bu gezinin en büyük sürprizi ve hediyesi oldu =) Kendisine buradan tekrar teşekkürlerimi sunarım.

Anahtar Kelimeler Sapanca Güveçte Alabalık Tren Tayfa
Dosyalar

Çizim İşlemlerinde Yazı Ortalama

Çizim işlemleri yaparken resim üzerine veya pencereye çizeceğimiz yazıların yatay veya dikey olarak ortalanmasını isteyebiliriz. Ortalama işlemini yapmak için DrawString metoduna verilen ek bir parametre vermek gerekiyor. Bu parametre de StringFormat sınıfı türünden bir nesne olmalı.

StringFormat sınıfı yazıyı otomatik alt satıra kaydırma (wrap) ve ortalama (aligment) işlemleriyle ilgili özellikleri saklayan bir sınıftır. Bizi ilgilendiren özellikle Alignment özelliğidir. Bu özelliğe atanan StringAlignment enumunun değerine göre bir yaslama yapılır. Enum Near, Far ve Center olarak 3 değer taşır. Ortalama yapmak için Center değeri seçilmeli.

   StringFormat strFrmt = new StringFormat();
   strFrmt.Alignment = StringAlignment.Center;

Aşağıdaki uygulamada dinamik olarak hazırladığım bir resmin içerisine yazdığım yazıyı ortaladım ve ortaya çıkan resmi bir PictureBox içerisinde gösterdim. Resmin genişliği yazdığım yazıdan çok daha geniş olduğunda ortalama işleminin etkisini görebileceğiz. Ancak burada unutmamamız gereken nokta böyle bir durumda yazının çizilmeye başlanacağı (x,y) koordinatı yerine çizim alanının RectangleF türünden verilmesi gerekliliğidir. Bizim örneğimizde bu alaN metoda gönderilen resmin boyut değeri (PhysicalDimension) kullanılarak oluşturulmuştur.

Form1 Design :

Yazı Ortalama Design

Form1.cs :

using System.Drawing;
using System.Windows.Forms;

namespace CizimStringOrtalama
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //hazırlanan resmi picture box'ta gösterme
            pict_orta.Image = OrtalanmisResimHazirla();
        }

        public Image OrtalanmisResimHazirla()
        {
            //400 piksel'e 200 piksel boyutlarında Bitmap oluşturma
            Bitmap img = new Bitmap(400, 100);

            //resmi üzerine yazı yazılması için yollama
            YaziYaz(img);

            return img;
        }

        public void YaziYaz(Image img)
        {
            //çizim işlemini yapacak grafik nesnesini oluşturma
            Graphics grp = Graphics.FromImage(img);

            //yazı fontu bilgileirni oluşturma
            Font fnt = new Font("Verdana", 15);

            //çizim işlemi için mavi renkli fırça hazırlama
            SolidBrush brsh = new SolidBrush(Color.Blue);

            //çizim yapılacak alanı belirleme. Bu alan resmin tüm genişliği ve yüksekliği olacaktır;
            RectangleF alan = new RectangleF(new PointF(0, 0), img.PhysicalDimension);

            //ASIL ORTALAMAYI BU KISIM YAPAR. STRINGFORMAT SINIFI STRING'IN NASIL SIĞDIRILACAĞI BİLGİSİNİ TAŞIR
            StringFormat strFrmt = new StringFormat();
            strFrmt.Alignment = StringAlignment.Center; //yazının yerleşiminin ortalanmasını istiyoruz

            grp.DrawString("Yüce Çelikel", fnt, brsh, alan, strFrmt);
        }
    }
}

Bu uygulamanın çalıştırılması sonucu oluşan ekran görüntüsü ise şöyledir : 

Yazı Ortalama Yatay

Görüldüğü gibi resim tüm sayfayı kaplamakta ancak yazı bu resmin ortasında çıkmaktadır. Aynı işlemi yatay değil de dikey eksende yapabilmek için bu sefer de LineAlignment özelliğine StringAligment enumu türünden bir Center değeri vermemiz yeterli olacaktır.

strFrmt.LineAlignment = StringAlignment.Center; //yazı yerleşimi dikey eksende ortalanır

Bu satırı kodlara eklememiz sonucu ortaya çıkan ekran görüntüsü ise şöyle olur :

Yazı Ortalama Dikey

 

Bir başka makalede görüşmek üzere.
YÜCE ÇELİKEL
MCPD Enterprise Developer

Bir başka makalede görüşmek üzere.

Yüce ÇELİKEL
MCPD Enterprise Developer

 

Anahtar Kelimeler StringFormat Alignment Drawing DrawString
Dosyalar CizimStringOrtalama.rar

C# ile Özel Font Kullanımı

Son yaptığım proje için doğan bir ihtiyacımı sizinle paylaşmak isterim. Bu projede resimler üzerine kullanıcının seçeceği font aileleri ve boyutlarda yazı yazmam gerekiyordu. Farklı olan nokta ise sistemde yüklü olmayan fontların da sadece .ttf uzantılı dosyalar verilerek kullanılabilmesinin istenmesiydi. Bu durumda sorduğum soru ise C# ile font dosyalarını okuyup birer FontFamily nesnesi haline getirmenin mümkün olup olmadığı oldu. Araştırmalarım sonucunda karşıma PrivateFontCollection sınıfı çıktı.

System.Drawing.Text isimalanı içerisinde bulunan bu sınıftan alınan bir nesne, içerisinde birden çok FontFamily nesnesini saklayabilir. Ancak koleksiyonun içerisine fontlar ancak AddFontFile metodu ile eklenebilir.

Aşağıdaki uygulamada bir Winforms projesi kullandım. Proje arayüzü sadece bir labeldan oluşmakta. Özel yüklediğmiz fontu bu labelın font değeri olarak atayarak, işlemin başarılı olup olmadığını anlayacağız. Bu amaçla form sınıfında bir LoadCustomFont metodu hazırladım. Bu metot verilen adresteki font dosyasını yükleyip, ona ait olan FontFamily nesnesini geriye döndürecektir. Font dosyası olarak da proje klasörü içerisine koyduğum Insula.ttf kullanılacaktır.

Form1 Design :

Özel Font Form Tasarım

using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;

namespace OzelFont
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //15 em büyüklüğünde Insula kullanan font nesnesini hazırlayıp, atama
            FontFamily aile = LoadCustomFont(@"..\..\Insula.ttf");
            lbl_sonuc.Font = new Font(aile, 20);
        }

        public FontFamily LoadCustomFont(string url)
        {
            PrivateFontCollection customs = new PrivateFontCollection();
            customs.AddFontFile(url); //font dosyasını verilen adresten yükleme

            return customs.Families[0]; //yüklenen ilk fontfamily nesnesini döndürür
        }
    }
}

Yukarıdaki kodlarla oluşturulan proje çalıştırıldığında aşağıdaki ekran görüntüsünde olduğu gibi label üzerinden yazı fontunun değiştiği ve Insula haline geldiği görülecektir.

Son Ekran Görüntüsü :

Insula Label

 

Yüce ÇELİKEL

MCPD Enterprise Developer

Anahtar Kelimeler PrivateFontCollection Custom Font FontFamily
Dosyalar OzelFont.rar

Site Yenilemesi ve Host Değişikliği

Artık alıştığınız üzere sitemi bir kez daha yeniledim. Hep söylüyorum. Sitem benim aynam. Ben ve bilgilerim görüşlerim değiştikçe o da bu değişikliklere ayak uyduruyor. Şimdiki sitem tüm yapısında ASP.NET MVC kullanıyor. Son derece kolay ve temiz kodlama oldu benim için. Gerçekten de muhteşem bir teknoloji. Öğrendiğim tüm ayrıntıları bir makale dizi olarak paylaşacağım.

Sitemle ilgili bir başka haber de artık sitemin Türkiye'de host ediliyor olması. Servergrid ile javascript dosyalarının içerisine eklenen kodlar sebebiyle ters düştüm. Sitem script injection yememesine rağmen bu sorun beni çileden çıkarttı ve çabuk davranıp işi bitirdim.

Şimdilik bu kadar. Yakın zamanda tüm bildiklerimi sizlerle paylaşmaya başlayacağım. Ben de çok heyecanlıyım Smile

Anahtar Kelimeler ASP.NET MVC Script Injection
Dosyalar