none
Gruopbox çerçeve yuvarlama RRS feed

Tüm Yanıtlar

    • Yuvarlak bir dikdörtgen şekli hesaplamanız gerekir. Bunu yapmak için, bir seçenek olarak AddArcyöntemi kullanabilir ve bir yoldaki bir dikdörtgenin dört köşesine yaylar ekleyebilirsiniz.
    • Tarama stiliyle başlık arka planı çizmek için bir HatchBrushBu nedenle, başlık tarama stili için bir özellik ekleyin. Bu şekilde HatchStyle, başlık arka planı için farklı değerler kullanabilirsiniz .
    • Farklı bir başlık rengine ve başlık yazı tipine sahip olmak için, kontrol edilecek bazı özellikler ekleyin.
    • Daha eksiksiz bir uygulamada, özellikleri, özelliğe yeni bir değer ayarlayarak denetimi çağırarak yeniden boyamaya neden olacak şekilde uygulamalısınız this.Invalidate().
    • Yeniden boyutlandırma sırasında titremeyi önlemek DoubleBufferediçin truein yapıcı olarak ayarlayarak çift arabelleğe almayı açın .
    • Köşelerde şeffaf arka plana sahip olmak için kullanın GroupBoxRenderer.DrawParentBackgroundEkran görüntüsü

    görüntü açıklamasını buraya girin

    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Windows.Forms;
    public class RoundPanel : GroupBox
    {
        public RoundPanel()
        {
            this.DoubleBuffered = true;
            this.TitleBackColor = Color.SteelBlue;
            this.TitleForeColor = Color.White;
            this.TitleFont = new Font(this.Font.FontFamily, Font.Size + 8, FontStyle.Bold);
            this.BackColor = Color.Transparent;
            this.Radious = 25;
            this.TitleHatchStyle = HatchStyle.Percent60;
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            GroupBoxRenderer.DrawParentBackground(e.Graphics, this.ClientRectangle, this);
            var rect = ClientRectangle;
            using (var path = GetRoundRectagle(this.ClientRectangle, Radious))
            {
                e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
                rect = new Rectangle(0, 0,
                    rect.Width, TitleFont.Height + Padding.Bottom + Padding.Top);
                if(this.BackColor!= Color.Transparent)
                    using (var brush = new SolidBrush(BackColor))
                        e.Graphics.FillPath(brush, path);
                var clip = e.Graphics.ClipBounds;
                e.Graphics.SetClip(rect);
                using (var brush = new HatchBrush(TitleHatchStyle,
                    TitleBackColor, ControlPaint.Light(TitleBackColor)))
                    e.Graphics.FillPath(brush, path);
                using (var pen = new Pen(TitleBackColor, 1))
                    e.Graphics.DrawPath(pen, path);
                TextRenderer.DrawText(e.Graphics, Text, TitleFont, rect, TitleForeColor);
                e.Graphics.SetClip(clip);
                using (var pen = new Pen(TitleBackColor, 1))
                    e.Graphics.DrawPath(pen, path);
            }
        }
        public Color TitleBackColor { get; set; }
        public HatchStyle TitleHatchStyle { get; set; }
        public Font TitleFont { get; set; }
        public Color TitleForeColor { get; set; }
        public int Radious { get; set; }
        private GraphicsPath GetRoundRectagle(Rectangle b, int r)
        {
            GraphicsPath path = new GraphicsPath();
            path.AddArc(b.X, b.Y, r, r, 180, 90);
            path.AddArc(b.X + b.Width - r - 1, b.Y, r, r, 270, 90);
            path.AddArc(b.X + b.Width - r - 1, b.Y + b.Height - r - 1, r, r, 0, 90);
            path.AddArc(b.X, b.Y + b.Height - r - 1, r, r, 90, 90);
            path.CloseAllFigures();
            return path;
        }
    }

    stackoverflow'dan  Reza Aghaei konu ile ilgili paylaşımıdır.


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz


    21 Ağustos 2020 Cuma 05:14
  • Bu tür görsel işlemler yapacaksanız winform ile eziyet çekersiniz.

    WPF'e geçin.


    pgnchess.com

    dergikapaklari.com

    21 Ağustos 2020 Cuma 12:54
  • Bu tür görsel işlemler yapacaksanız winform ile eziyet çekersiniz.

    WPF'e geçin.


    pgnchess.com

    dergikapaklari.com

    Buna katılıyorum. WPF'ye geçin kontrol sizde olsun.

    Yada madem formu radius'lü yapabilirdin, bundan bir usercontrol yaratıp groupBox gibi kullan. 

    yada telerik,devexpress gibi hazır yapıları kullan.


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz

    21 Ağustos 2020 Cuma 13:13