亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# 開發圓角控件(窗體)的具體實現

2020-01-24 02:46:41
字體:
來源:轉載
供稿:網友

最近在做卡片視圖的程序,要求將控件做成帶有圓角的效果,下面是我在網上查找的資料,經過測試,確定可以實現功能。其中方法三既適應于控件,也適應于窗體。

先上傳效果圖:

方法一:

增加命名空間:using System.Drawing.Drawing2D; 
添加方法如下:當然各角的點可根據需要確定.

復制代碼 代碼如下:

private void Type(Control sender, int p_1, double p_2)
        {
            GraphicsPath oPath = new GraphicsPath();
            oPath.AddClosedCurve(
                new Point[] {
            new Point(0, sender.Height / p_1),
            new Point(sender.Width / p_1, 0),
            new Point(sender.Width - sender.Width / p_1, 0),
            new Point(sender.Width, sender.Height / p_1),
            new Point(sender.Width, sender.Height - sender.Height / p_1),
            new Point(sender.Width - sender.Width / p_1, sender.Height),
            new Point(sender.Width / p_1, sender.Height),
            new Point(0, sender.Height - sender.Height / p_1) },

                (float)p_2);

            sender.Region = new Region(oPath);
        }

在窗體的paint和resize事件中增加:Type(this,20,0.1); 
參數20和0.1也可以根據自己的需要調整到最佳效

方法二:

復制代碼 代碼如下:

public void SetWindowRegion()
        {

            System.Drawing.Drawing2D.GraphicsPath FormPath;

            FormPath = new System.Drawing.Drawing2D.GraphicsPath();

            Rectangle rect = new Rectangle(0, 22, this.Width, this.Height - 22);//this.Left-10,this.Top-10,this.Width-10,this.Height-10);                

            FormPath = GetRoundedRectPath(rect, 30);

            this.Region = new Region(FormPath);

        }

        private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius)
        {

            int diameter = radius;

            Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter));

            GraphicsPath path = new GraphicsPath();

            //   左上角  

            path.AddArc(arcRect, 180, 90);

            //   右上角  

            arcRect.X = rect.Right - diameter;

            path.AddArc(arcRect, 270, 90);

            //   右下角  

            arcRect.Y = rect.Bottom - diameter;

            path.AddArc(arcRect, 0, 90);

            //   左下角  

            arcRect.X = rect.Left;

            path.AddArc(arcRect, 90, 90);

            path.CloseFigure();

            return path;

        }


在窗體的resize事件中增加:SetWindowRegion(); 

方法三:通過Window系統API行數,修改控件和窗體為橢圓形狀。代碼如下所示:

復制代碼 代碼如下:

[System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr BeginPath(IntPtr hdc);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern int SetBkMode(IntPtr hdc, int nBkMode);
        const int TRANSPARENT = 1;
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr EndPath(IntPtr hdc);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern IntPtr PathToRegion(IntPtr hdc);
        [System.Runtime.InteropServices.DllImport("gdi32")]
        private static extern int Ellipse(IntPtr hdc, int x1, int y1, int x2, int y2);
        [System.Runtime.InteropServices.DllImport("user32")]
        private static extern IntPtr SetWindowRgn(IntPtr hwnd, IntPtr hRgn, bool bRedraw);
        [System.Runtime.InteropServices.DllImport("user32")]
        private static extern IntPtr GetDC(IntPtr hwnd);

復制代碼 代碼如下:

protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            IntPtr dc;
            IntPtr region;

            dc = GetDC(this.Handle);
            BeginPath(dc);
            SetBkMode(dc, TRANSPARENT);
            Ellipse(dc, 0, 0, this.Width - 3, this.Height - 2);
            EndPath(dc);
            region = PathToRegion(dc);
            SetWindowRgn(this.Handle, region, false);
        }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91夜夜揉人人捏人人添红杏| 欧美黑人极品猛少妇色xxxxx| 黑人巨大精品欧美一区二区| 97国产在线视频| 欧美激情三级免费| 日韩av在线精品| 91久久精品美女| 国产精品久久久久久影视| 中文字幕欧美在线| 亚洲第一区中文99精品| 国产美女被下药99| 性欧美xxxx交| 中文字幕视频一区二区在线有码| 欧洲美女7788成人免费视频| 日韩高清免费在线| 国产亚洲日本欧美韩国| 成人乱人伦精品视频在线观看| 亚洲精品永久免费| 中文字幕不卡av| 日韩欧美成人免费视频| 精品国产1区2区| 欧美精品情趣视频| 亚洲欧美日韩精品久久奇米色影视| 欧美在线精品免播放器视频| 亚洲精品99久久久久中文字幕| 亚洲第一在线视频| 91成人性视频| 欧美精品激情在线观看| 国产精品99导航| 国产v综合v亚洲欧美久久| 久久国产精品首页| 一区二区三区久久精品| 久久综合久久88| 粗暴蹂躏中文一区二区三区| 欧美裸体xxxx| 最近2019中文免费高清视频观看www99| 久久久爽爽爽美女图片| 欧美午夜影院在线视频| 亚洲精品白浆高清久久久久久| 国产自摸综合网| 亚洲剧情一区二区| 国产69精品99久久久久久宅男| 91av成人在线| 久久在线观看视频| 久久久久成人网| 在线丨暗呦小u女国产精品| 久久久久久有精品国产| 国产精品影片在线观看| 欧美在线观看网址综合| 国产精品高潮呻吟久久av黑人| 欧美俄罗斯乱妇| 中文字幕国产精品久久| 在线播放亚洲激情| 国产精品一区专区欧美日韩| 成人免费视频xnxx.com| 亚洲一区二区久久久久久| 韩国欧美亚洲国产| 亚洲欧美日韩国产中文专区| 亚洲国内精品视频| 国产精品久久久久久久久男| 日韩电影在线观看永久视频免费网站| 成人在线精品视频| 中文字幕日韩精品有码视频| 亚洲视频777| 亚洲一区美女视频在线观看免费| 日本久久精品视频| 欧美精品18videosex性欧美| 亚洲免费电影在线观看| 欧美一级电影久久| 一本色道久久综合狠狠躁篇怎么玩| 日本成人免费在线| 国产不卡一区二区在线播放| 亚洲人成在线电影| 欧美国产在线视频| 国产精品一二三在线| 亚洲国产精品一区二区三区| 国产综合在线观看视频| 尤物yw午夜国产精品视频明星| 欧美日韩国产成人高清视频| 国产成人精品在线播放| 亚洲精品成人免费| 日韩中文字幕不卡视频| 亚洲精品按摩视频| 久久亚洲电影天堂| 日韩精品一二三四区| 日韩精品在线视频观看| 久久6精品影院| 九九热在线精品视频| 日韩在线欧美在线国产在线| 亚洲人成在线一二| 91欧美视频网站| 久久久伊人日本| 国产精品午夜国产小视频| 91大神福利视频在线| 欧美视频在线免费| 欧美精品videos性欧美| 久久好看免费视频| 日韩av在线一区二区| 久久综合网hezyo| 欧美日韩国产精品一区二区三区四区| 亚洲人成电影网| 亚洲变态欧美另类捆绑| 亚洲大胆美女视频| 欧美中在线观看| 一区二区三区无码高清视频| 国产日韩中文字幕| 在线日韩av观看| 97在线视频观看| 日韩av综合中文字幕| 色在人av网站天堂精品| 国产精品狼人色视频一区| 国产亚洲精品日韩| 日韩成人在线免费观看| 国产国产精品人在线视| 亚洲欧美国产精品专区久久| 久久久精品久久| 亚洲免费视频一区二区| 神马久久久久久| 成人妇女免费播放久久久| 欧美成人激情图片网| 米奇精品一区二区三区在线观看| 欧美性极品xxxx做受| 亚洲欧美一区二区三区四区| 亚洲va国产va天堂va久久| 国产精品久久精品| 欧美综合第一页| 色狠狠久久aa北条麻妃| www.xxxx精品| 国产精品高清在线| 日韩少妇与小伙激情| 欧美大片第1页| 日韩网站免费观看| 欧美日韩亚洲精品一区二区三区| 91精品国产乱码久久久久久蜜臀| 亚洲丝袜一区在线| 欧美国产日韩精品| 日韩成人av在线播放| 亚洲精品视频二区| 欧美在线视频一区二区| 欧美极品少妇全裸体| 欧美在线www| 久久免费少妇高潮久久精品99| 久久人人97超碰精品888| 久久精品国产一区二区电影| 一色桃子一区二区| 亚洲影视九九影院在线观看| 精品国偷自产在线视频| 色综合伊人色综合网| 日本国产精品视频| 久久久999精品| 日韩有码片在线观看| 国产精品嫩草影院久久久| 91chinesevideo永久地址| 精品国产一区久久久| 18性欧美xxxⅹ性满足| 国产欧美一区二区三区久久人妖| 国产精品视频xxx| 亚洲在线免费视频| 国内精品久久久久久久| 在线免费看av不卡| 亚洲欧美制服丝袜| 亚洲最大成人在线| 成人精品久久久| 亚洲国产精品va在线观看黑人|