最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法

 更新時(shí)間:2021年11月15日 09:11:19   作者:生產(chǎn)隊(duì)的驢.  
某論壇的評論區(qū)模塊,發(fā)現(xiàn)這功能很不錯(cuò),琢磨了一晚上做了大致一樣的,用來當(dāng)做 注冊模塊 的頭像綁定功能,下面通過實(shí)例代碼給大家介紹下C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法,感興趣的朋友一起看看吧

效果圖:

在這里插入圖片描述

完全代碼(下方有詳細(xì)解讀)

 private void textBox1_TextChanged(object sender, EventArgs e)
        {//這里是文本框的事件 值發(fā)生 改變時(shí)發(fā)生

            StringBuilder UserID = new StringBuilder(20);
            //值經(jīng)常發(fā)生改變 使用StringBuilder 并且開辟20字符的空間

            Regex r = new Regex(@"[\d]");
            //正則表達(dá)式 過濾字符  \d表示只要0-9的數(shù)字
            //也就是全部數(shù)字

            MatchCollection match = r.Matches(textBox1.Text);
            //需要匹配的字符串 

            foreach (Match user in match)
            {//使用循環(huán) 過濾不需要的字符串

                UserID.Append(user);
                //過濾好的字符串 添加進(jìn)StringBuilder
            }

            if (UserID.Length <= 4)
            {
                //判斷匹配好的字符串是否大于4
                //因?yàn)镼Q最低是5位數(shù)...
                return;
            }


            Thread th = new Thread(() => beg(UserID.ToString()));
            //創(chuàng)建線程      把 StringBuilder 值傳遞過去

            th.IsBackground = true;
            //設(shè)置成后臺(tái)線程

            th.Start();
            //開始線程
        }

線程執(zhí)行的方法:

 public void beg(string id)
        {
            //線程執(zhí)行的方法體


           try
            {
                HttpWebRequest beg = (HttpWebRequest)WebRequest.Create("http://q1.qlogo.cn/g?b=qq&nk="+id+"&s=2");
                //發(fā)送請求 

                beg.Timeout = 5000;
                //請求的時(shí)間為5秒 超過就停止請求

                HttpWebResponse wb = (HttpWebResponse)beg.GetResponse();
                //接收服務(wù)器返回的請求

                Stream s = wb.GetResponseStream();
                //把回來的請求變 一個(gè) 流

                using (Image i = new Bitmap(s))
                {    //把流傳遞過來

                    Bitmap b = new Bitmap(50, 50); //初始像素值

                    using (Graphics g = Graphics.FromImage(b))
                    {//使用Gdi畫圖  在圖片上畫 

                        g.SmoothingMode = SmoothingMode.HighQuality;
                        //圖片的抗鋸齒

                        using (GraphicsPath p = new GraphicsPath(System.Drawing.Drawing2D.FillMode.Alternate))
                        {
                            p.AddEllipse(0, 0, i.Width, i.Height);//添加橢圓

                            g.FillPath(new TextureBrush(i), p);//填充里面

                            pictureBox1.Image = b;
                            //賦值給圖片框
                        }

                    }

                }
            }
            catch
            {

            }

        }

前言:

某論壇的評論區(qū)模塊,發(fā)現(xiàn)這功能很不錯(cuò),琢磨了一晚上做了大致一樣的,用來當(dāng)做 注冊模塊 的頭像綁定功能

某論壇評論區(qū)模塊(動(dòng)圖)

在這里插入圖片描述

注冊模塊功能建議:

用戶注冊時(shí),可以選擇性的上傳頭像,如果沒上傳頭像,就默認(rèn)使用QQ綁定的頭像

獲取QQ頭像的接口:

http://q1.qlogo.cn/g?b=qq&nk=這里是QQ號&s=2 這里是尺寸

http://q1.qlogo.cn/g?b=qq&nk=972001531&s=2

尺寸標(biāo)識符 尺寸大小
1 40 × 40
2 40 × 40
3 100 × 100
4 140 × 140
5 640 × 640
40 40 × 40
100 100 × 100
按照自己頭像框的大小自行選擇

就是一個(gè)頭像的URl

請?zhí)砑訄D片描述

也可以可下載本地 上傳服務(wù)器等…自行研究

接口有了 接下來就是 使用C#去實(shí)現(xiàn)功能了…

界面圖:

為了方便演示 沒有做其他的功能…簡單的搭建了一個(gè)窗體

在這里插入圖片描述
在這里插入圖片描述

從圖可以看出 每修改一個(gè)數(shù)字都會(huì)重新獲取一次的頭像,
所以代碼就寫在文本框的事件里

請?zhí)砑訄D片描述

該事件的意思就是 每當(dāng)文本框的內(nèi)容發(fā)生改變時(shí)發(fā)生

過濾輸入的字符:

請?zhí)砑訄D片描述

考慮到可能會(huì)輸入一些 亂七八糟的字符串
例:9720ada15
這樣就識別不了是一個(gè)QQ號 所以需要過濾掉,只識別數(shù)字

正則表達(dá)式過濾字符:
定義規(guī)則

 Regex r = new Regex(@"[\d]");
//正則表達(dá)式 過濾字符  \d表示只要0-9的數(shù)字
   或者
 Regex r = new Regex(@"[0-9]");         

存儲(chǔ)匹配好的字符串

 Regex r = new Regex(@"[\d]");
//正則表達(dá)式 過濾字符  \d表示只要0-9的數(shù)字
   或者
 Regex r = new Regex(@"[0-9]");         

匹配字符串:

 foreach (Match user in match)
            {//使用循環(huán) 過濾不需要的字符串

                UserID.Append(user);
                //過濾好的字符串 添加進(jìn)StringBuilder
            }

判斷匹配好的長度

 if (UserID.Length <= 4)
            {
                //判斷匹配好的字符串是否大于4
                //因?yàn)镼Q最低是5位數(shù)...
                return;
                //不大于4就返回
            }

使用接口QQ接口:

因?yàn)榻涌谑且粋€(gè)網(wǎng)頁 所以需要發(fā)送請求
需要用到

HttpWebRequest: 發(fā)送網(wǎng)頁請求
HttpWebResponse: 接收服務(wù)器發(fā)送的請求

在這里插入圖片描述

但發(fā)送請求時(shí)又有一個(gè) 問題 那就是 如果網(wǎng)速比較慢 或者 服務(wù)器 響應(yīng)速度慢 會(huì)造成 軟件的假死 但是可以通過線程解決這個(gè)問題…

定義線程:

Thread th = new Thread(() => beg(UserID.ToString()));
    //創(chuàng)建線程      把 StringBuilder 值傳遞過去
    
    th.IsBackground = true;
    //設(shè)置成后臺(tái)線程

    th.Start();
    //開始線程
}

線程執(zhí)行的方法:

發(fā)起請求:

 HttpWebRequest beg = (HttpWebRequest)WebRequest.Create("http://q1.qlogo.cn/g?b=qq&nk="+id+"&s=2");
                //發(fā)送請求 
 beg.Timeout = 5000;
                //請求的時(shí)間為5秒 超過就停止請求

接收返回請求:

   HttpWebResponse wb = (HttpWebResponse)beg.GetResponse();
        //接收服務(wù)器返回的請求 流的方式

使用流轉(zhuǎn)換:

得到流后 可以把圖片保存到 本地 等等…

  Stream s = wb.GetResponseStream();
                //把回來的請求變 一個(gè) 流

圖片轉(zhuǎn)成圓形:

圖片框的默認(rèn)情況下是 方形

在這里插入圖片描述

并沒有直接的屬性變成圓形…
這里使用GDI繼續(xù)繪制

using (Image i = new Bitmap(s))
                {    //把流傳遞過來

                    Bitmap b = new Bitmap(50, 50); //初始像素值

                    using (Graphics g = Graphics.FromImage(b))
                    {//使用Gdi畫圖  在圖片上畫 

                        g.SmoothingMode = SmoothingMode.HighQuality;
                        //圖片的抗鋸齒

                        using (GraphicsPath p = new GraphicsPath(System.Drawing.Drawing2D.FillMode.Alternate))
                        {
                            p.AddEllipse(0, 0, i.Width, i.Height);//添加橢圓

                            g.FillPath(new TextureBrush(i), p);//填充里面

                            pictureBox1.Image = b;
                            //賦值給圖片框
                        }

                    }

                }

在這里插入圖片描述

這樣就完成了 …

到此這篇關(guān)于C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的文章就介紹到這了,更多相關(guān)C# 圓形頭像框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

宁化县| 开化县| 隆尧县| 肇庆市| 石阡县| 福泉市| 平山县| 中西区| 集安市| 彩票| 民丰县| 容城县| 宁蒗| 焉耆| 休宁县| 闻喜县| 海原县| 彝良县| 道孚县| 松阳县| 辽中县| 乃东县| 布拖县| 铁岭县| 罗甸县| 大洼县| 遵义县| 塔河县| 清涧县| 六安市| 永平县| 松原市| 南漳县| 南投市| 浠水县| 阿拉尔市| 长武县| 潜山县| 贵港市| 永登县| 卓资县|