MSDN Library
İçindekiler tablosunu daralt
İçindekiler tablosunu genişlet
Bu makale, makine tarafından çevrilmiştir. Makaleyi İngilizce dilinde görüntülemek için İngilizce onay kutusunu işaretleyin. Ayrıca, fare işaretçisiyle İngilizce metnin üzerine gelerek metni açılır pencerede de görüntüleyebilirsiniz.
Çeviri
İngilizce

Nasıl yapılır: Dikdörtgen Olmayan Windows Formları Oluşturma

.NET Framework (current version)

Daha önce dikdörtgen olmayan form oluşturma, API çağrıları ve kapsamlı programlama çalışmalarına katılan emek ve zaman alıcı bir işlem oldu. Bu artık bir durumdur.

Not Not

Bu işlem, söz konusu donanım grafik önemli miktarda içerir; Sonuç olarak, bilgisayarlar bellek ve grafik kartları var göre farklı şekilde gerçekleştirecektir. Özel çizim uygulamaları içeren, kullanıcılara dağıtmadan önce tatmin edici bir performans sağlamak için ekran kartları çeşitli her zaman sınayın.

Dikdörtgen olmayan form oluşturma işleminde iki öğe vardır: şekillendirilmiş formu oluşturma ve form taşınmasına ve kapalı izin vermek için bazı programlama mantığı kodlama. Özel Şekil formla başlık çubuğu ve formun ekran çevresinde taşımak ve kapatmak için yeteneği gibi içine içerdiği işlevselliği hiçbiri olduğundan bu ikinci adım gereklidir. Bu nedenle, bu özellikleri çoğaltmak üzere kod yazmak gereklidir. Hem formlar hem de dikdörtgen olmayan Şekil denetimleri oluşturma hakkında daha fazla bilgi için bkz: Nasıl yapılır: Şekilli Windows Formu Oluşturma.

Dikdörtgen olmayan bir form oluştururken üç adımdan oluşur:

  • Formun yüzey olarak davranacak bir bitmap oluşturmak. (Etkili bir şekilde, "bir dikdörtgen formundan istediğiniz şekli kesme".)

  • Windows Application projesi oluşturun ve başlık çubuğunda kurtulmak ve bitmap formun arka planı kullanmak için özelliklerini ayarlayabilirsiniz.

  • Formu taşırken ve kapatma gibi başlık çubuğunda sağlanan işlevselliği yeniden oluşturur kodu girin.

Not Not

Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir. Ayarlarınızı değiştirmek için Araçlar menüsünden İçeri ve Dışarı Aktarma Ayarları'nı seçin. Daha fazla bilgi için bkz. Visual Studio ayarları.

Şekillendirilmiş bir form oluşturmak için

  1. Bir renkteki dikdörtgen olmayan bir şekilde, bir bit eşlem başka bir rengin farklı arka plan oluşturun. İstediğiniz herhangi bir boyama programı kullanın. Çizim şekli, sonuçta formunuz olabilir, yararlı olması için büyük çizmek emin olun.

    Not Not

    Bu daha sonra önemli olarak mavi gibi bir anımsanması kolay bir arka plan rengi seçin.

  2. Visual Studio'da yeni bir Windows Application projesi oluşturun. Daha fazla bilgi için bkz. Nasıl yapılır: Yeni bir Windows Forms Uygulaması Projesi Oluşturma.

  3. İçinde özelliklerini pencere:

    • Set FormBorderStyle özelliğine yok.

      Bu özellik formundan başlık çubuğunu kaldırır. (Ayrıca bir başlık çubuğu, formu kapatın ve form taşıma yeteneği de dahil olmak üzere tarafından sağlanan işlevselliği'ı kaldırır. Ancak, bu eksiklikleri aşağıdaki kodda gönderilir.)

    • Set BackgroundImage daha önce oluşturduğunuz bit eşlem dosyasının formun özelliği. Proje sistem dosyası eklemek için gerek yoktur; Bu arka plan görüntüsü olarak belirttiğinizde otomatik olarak yapılacaktır.

      Bu özellik, bitmap görüntüsü formun arka planı olarak ayarlar. (Art arda ile kullanıldığında TransparencyKey , aşağıda belirtilen bu özellik formun şeklini tanımlayan özellik.)

    • Set TransparencyKey özelliği için bit eşlem dosyası arka plan rengi.

      Bu özellik, uygulama görmek istediğiniz formun hangi bölümlerini söyler.

      Not Not

      Büyük 24-bit renk derinliği ayarlamak monitör ayarını rağmen saydam olmadığı formun belirli bölümlerini görüntüleme problemleri olabilir TransparencyKey özelliği. Bu sorunu önlemek için monitörün renk derinliği olarak ayarlandığından emin olun az 24-bit olarak Görüntü Denetim Masası. Bu saydamlık özelliğini uygulamaları geliştirirken, kullanıcılarınız bu sorunun farkında yapmak zorunda olacağını unutmayın.

Formu kapatmak için kod yazmak için

  1. Ekleme bir düğmesini forma denetim. Daha fazla bilgi için bkz. Nasıl yapılır: Windows Formlarına Denetimler Ekleme.

  2. Çağırarak formu kapatmak kullanıcının sağlayacak kodu ekleyin, kapatmak yöntemi.

    Nasıl bir düğme ekleyebilirsiniz aşağıdaki örnekte gösterilmektedir, tıklatıldığında form kapanır.

    private void button1_Click(object sender, System.EventArgs e)
    {
       this.Close();
    }
    
    C# notuC# Notu

    Olay işleyicisini etkinleştirmek için kod eklediğinizden emin olun. Aşağıdaki örnek kodu kullanarak gibi görünecektir:

    this.Button1.Click += new System.EventHandler(this.button1_Click);
    

(İsteğe bağlı) form taşımak üzere kod yazmak için

  1. Onu sürüklendiğinde formu taşımak için bir yordam oluşturun. Yeni bir oluşturmak için aşağıdaki için benzer bir kod girin noktası nesne. Form taşıma hesaplarken bu değişken olarak görür. İsMouseDown alan kullanıcı fare düğmesini basılı olup olmadığını izlemek için kullanılır. Form, yalnızca fareyi basılı tutulduğunda taşımanız gerekir.

    private Point mouseOffset;
    private bool isMouseDown = false;
    
  2. Form için bir olay işleyicisi oluşturma MouseDown olay. İşleyicisinde sürüklemek için form üzerinde herhangi bir yeri tıklatmak kullanıcının kodu ekleyin. Olay işleyicilerini oluşturma hakkında ayrıntılı bilgi için bkz: Nasıl yapılır: Tasarımcıyı Kullanarak Olay İşleyicileri Oluşturma.

    Aşağıdaki koordinatları atamak için benzer bir kod girinmouseOffset değişkeni geçerli fare işaretçisinin konumuna göre. Aşağıdaki kod, kenarlık boyutu sistem bilgilerini kullanarak kaydırma konumu hesaplanır dikkat edin (FrameBorderSize.Width) ve başlık çubuğunun yüksekliğini (CaptionHeight). Bu uzaklık, çünkü bazı ölçümler istemci alanı ile yapılır ve bazı ekran koordinatları ile yapılan test edilirken dikkate gerekir. Bu nedenle, uzaklık kenarlık genişliği + resim yazısı yükseklik + uzaklık formunun istemci alanına eşittir.

    private void Form1_MouseDown(object sender, 
        System.Windows.Forms.MouseEventArgs e)
    {
        int xOffset;
        int yOffset;
    
        if (e.Button == MouseButtons.Left) 
        {
            xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
            yOffset = -e.Y - SystemInformation.CaptionHeight - 
                SystemInformation.FrameBorderSize.Height;
            mouseOffset = new Point(xOffset, yOffset);
            isMouseDown = true;
        }    
    }
    
    C# notuC# Notu

    Olay işleyicisini etkinleştirmek için kod eklediğinizden emin olun. Aşağıdaki örnek kodu kullanarak gibi görünecektir:

    this.MouseDown += new
       System.Windows.Forms.MouseEventHandler
       (this.Form1_MouseDown);
    
  3. Form için bir olay işleyicisi oluşturma MouseMove olay.

    Aşağıdakine benzer bir kod girin. Sol fare düğmesi tıklatıldığında ve fare sürüklediğiniz zaman, formun yere özelliği, yeni bir konuma ayarlanır.

    private void Form1_MouseMove(object sender, 
        System.Windows.Forms.MouseEventArgs e)
    {
        if (isMouseDown) 
        {
            Point mousePos = Control.MousePosition;
            mousePos.Offset(mouseOffset.X, mouseOffset.Y);
            Location = mousePos;
        }
    }
    
    C# notuC# Notu

    Olay işleyicisini etkinleştirmek için kod eklediğinizden emin olun. Aşağıdaki örnek kodu kullanarak gibi görünecektir:

    this.MouseMove += new
       System.Windows.Forms.MouseEventHandler
       (this.Form1_MouseMove);
    
  4. Form için bir olay işleyicisi oluşturma MouseUp olay. Aşağıdakine benzer bir kod girin.

    private void Form1_MouseUp(object sender, 
        System.Windows.Forms.MouseEventArgs e)
    {
        // Changes the isMouseDown field so that the form does
        // not move unless the user is pressing the left mouse button.
        if (e.Button == MouseButtons.Left) 
        {
            isMouseDown = false;
        }
    }
    
    C# notuC# Notu

    Olay işleyicisini etkinleştirmek için kod eklediğinizden emin olun. Aşağıdaki örnek kodu kullanarak gibi görünecektir:

    this.MouseUp += new
       System.Windows.Forms.MouseEventHandler
       (this.Form1_MouseUp);
    

Topluluk İçeriği

Show:
© 2016 Microsoft