Windows Forms ile kontrole Etched border eklemek

.net comments

Genellikle programların About dialog pencerelerinde görürüz bu şekilde çizgileri. Etched (kazınmış demekmiş) 3 boyutlu görüntüsü ile kullanıldığı yere göre pencereye modern bir hava katıyor. Firefox’un About penceresi mesela:

Firefox 3 About dialog penceresi

Butonların hemen üstündeki çizgi pencerenin beyaz arkaplanlı üst ve gri arkaplanlı alt kısımlarını ayırmada kullanılmış ve 3 boyutlu bir görünüm kazandırmış. Visual Basic 6 ile böyle bir şeyi yapmak için Line kontrollerini kullanırdık. Birer adet gri ve beyaz renkli Line kontrolünü aralık bırakmadan alt alta gelecek şekilde formumuza yerlerştirdiğimizde bu görünümü elde edebilirdik. Visual Studio’nun .NET sonrası versiyonlarında böyle bir kontrol gelmemekte. Bana kalırsa gerek de yok çünkü Form üzerine Line tarzı kontroller koymak gereksiz yere tasarım ortamını karıştırıyor. Bunun yerine Windows Forms’un nimetlerinden yararlanarak bu sorunu çok daha şık bir şekilde çözebiliriz.

Yapmamız gereken Panel kontrolünün OnPaint metodunu override edip bize sağlanan Graphics nesnesini kullanarak ControlPaint.DrawBorder3D static metodu ile istediğimiz kenara, istediğimiz tarzda bir border ekleyebiliriz. C# ile anlatacak olursam:

class EtchedBorderedPanel : Panel
{
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        ControlPaint.DrawBorder3D(e.Graphics, 
            this.ClientRectangle, 
            Border3DStyle.Etched, 
            Border3DSide.Top);
    }
}

Bu kontrolü daha sonra penceremizin alt kısmına Dock edebiliriz. En son hafta sonu projem FxLibrarian için yaptığım About dialog penceresi:

FxLibrarian About dialog penceresi

CodeProject‘teki şu makale de böyle bir kontrolü nasıl yapacağınızı anlatıyor. Biraz eski ama tekrar kullanılabilir bir kontrol yapma konusunda güzel bilgiler içeriyor.

Comments