Aracılığıyla paylaş


Kullanıcı Çizimli Denetimler

.NET Framework, kendi denetimlerinizi kolayca geliştirmenizi sağlar. Koda bağlı bir dizi standart denetim olan bir kullanıcı denetimi oluşturabilir veya sıfırdan kendi denetiminizi tasarlayabilirsiniz. Var olan bir denetimden devralan bir denetim oluşturmak ve kendi işlevselliğine eklemek için devralmayı bile kullanabilirsiniz. Hangi yaklaşımı kullanırsanız kullanın, .NET Framework oluşturduğunuz tüm denetimler için özel bir grafik arabirimi çizme işlevselliği sağlar.

Denetimin boyaması, denetimin yöntemindeki kodun OnPaint yürütülmesiyle gerçekleştirilir. yönteminin OnPaint tek bağımsız değişkeni, denetiminizi işlemek için gereken tüm bilgileri ve işlevleri sağlayan bir PaintEventArgs nesnedir. PaintEventArgs, denetiminizin işlenmesinde kullanılacak iki asıl nesne olarak sağlar:

  • ClipRectangle object - denetimin çizilecek bölümünü temsil eden dikdörtgen. Bu, denetimin tamamı veya denetimin nasıl çizildiğine bağlı olarak denetimin bir parçası olabilir.

  • Graphics object - Denetiminizi çizmek için gerekli işlevselliği sağlayan çeşitli grafik odaklı nesneleri ve yöntemleri kapsüller.

Nesne ve nesnenin Graphics nasıl kullanılacağı hakkında daha fazla bilgi için bkz . Nasıl yapılır: Çizim için Grafik Nesneleri Oluşturma.

Denetim OnPaint ekranda her çizildiğinde veya yenilendiğinde olay tetiklenir ve ClipRectangle nesne, boyamanın gerçekleşeceği dikdörtgeni temsil eder. Denetimin tamamının yenilenmesi gerekiyorsa, ClipRectangle tüm denetimin boyutunu temsil eder. Ancak denetimin yalnızca bir bölümünün yenilenmesi gerekiyorsa, ClipRectangle nesne yalnızca yeniden çizilmesi gereken bölgeyi temsil eder. Böyle bir duruma örnek olarak, bir denetimin kullanıcı arabirimindeki başka bir denetim veya form tarafından kısmen gizlenmesi gösterilebilir.

sınıfından Control devralırken yöntemini geçersiz kılmanız OnPaint ve içinde grafik işleme kodu sağlamanız gerekir. Bir kullanıcı denetimine veya devralınan denetime özel bir grafik arabirimi sağlamak istiyorsanız, yöntemini geçersiz kılarak OnPaint da bunu yapabilirsiniz. Aşağıda bir örnek gösterilmiştir:

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)  
   ' Call the OnPaint method of the base class.  
   MyBase.OnPaint(e)  
  
   ' Declare and instantiate a drawing pen.  
   Using myPen As System.Drawing.Pen = New System.Drawing.Pen(Color.Aqua)  
      ' Draw an aqua rectangle in the rectangle represented by the control.  
      e.Graphics.DrawRectangle(myPen, New Rectangle(Me.Location, Me.Size))  
   End Using
End Sub  
protected override void OnPaint(PaintEventArgs e)  
{  
   // Call the OnPaint method of the base class.  
   base.OnPaint(e);  
  
   // Declare and instantiate a new pen.  
   using (System.Drawing.Pen myPen = new System.Drawing.Pen(Color.Aqua))  
   {
      // Draw an aqua rectangle in the rectangle represented by the control.  
      e.Graphics.DrawRectangle(myPen, new Rectangle(this.Location,
         this.Size));  
   }
}  

Yukarıdaki örnekte, bir denetimin çok basit bir grafik gösterimiyle nasıl işleyebileceğiniz gösterilmektedir. Temel sınıfın OnPaint yöntemini çağırır, çizecek bir Pen nesne oluşturur ve son olarak denetimin ve Size tarafından Location belirlenen dikdörtgende bir üç nokta çizer. Çoğu işleme kodu bundan önemli ölçüde daha karmaşık olsa da, bu örnek nesnenin içinde PaintEventArgs yer alan nesnenin Graphics kullanımını gösterir. veya Buttongibi UserControl bir grafik gösterimi olan bir sınıftan devralıyorsanız ve bu gösterimi işlemenize dahil etmek istemiyorsanız, temel sınıfınızın OnPaint yöntemini çağırmamalısınız.

Denetiminizin yöntemindeki OnPaint kod, denetim ilk çizildiğinde ve her yenilendiğinde yürütülür. Denetiminizin yeniden boyutlandırıldığı her seferde yeniden çizildiğinden emin olmak için, denetiminizin oluşturucusna aşağıdaki satırı ekleyin:

SetStyle(ControlStyles.ResizeRedraw, True)  
SetStyle(ControlStyles.ResizeRedraw, true);  

Dekont

Control.Region Dikdörtgen olmayan bir denetim uygulamak için özelliğini kullanın.

Ayrıca bkz.