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

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

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

效果圖:

在這里插入圖片描述

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

 private void textBox1_TextChanged(object sender, EventArgs e)
        {//這里是文本框的事件 值發(fā)生 改變時發(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
                //因為QQ最低是5位數(shù)...
                return;
            }


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

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

            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;
                //請求的時間為5秒 超過就停止請求

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

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

                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)這功能很不錯,琢磨了一晚上做了大致一樣的,用來當(dāng)做 注冊模塊 的頭像綁定功能

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

在這里插入圖片描述

注冊模塊功能建議:

用戶注冊時,可以選擇性的上傳頭像,如果沒上傳頭像,就默認(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
按照自己頭像框的大小自行選擇

就是一個頭像的URl

請?zhí)砑訄D片描述

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

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

界面圖:

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

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

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

請?zhí)砑訄D片描述

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

過濾輸入的字符:

請?zhí)砑訄D片描述

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

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

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

存儲匹配好的字符串

 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
                //因為QQ最低是5位數(shù)...
                return;
                //不大于4就返回
            }

使用接口QQ接口:

因為接口是一個網(wǎng)頁 所以需要發(fā)送請求
需要用到

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

在這里插入圖片描述

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

定義線程:

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

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

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

發(fā)起請求:

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

接收返回請求:

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

使用流轉(zhuǎn)換:

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

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

圖片轉(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)文章

  • 實例代碼講解c# 線程(上)

    實例代碼講解c# 線程(上)

    這篇文章主要介紹了講解c# 線程的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C# 讀取指定路徑配置文件的方法

    C# 讀取指定路徑配置文件的方法

    為了實現(xiàn)多個C#程序共用一個config文件,需要程序讀取指定路徑的config文件。代碼如下:
    2013-03-03
  • C#使用WebClient實現(xiàn)文件上傳的操作步驟

    C#使用WebClient實現(xiàn)文件上傳的操作步驟

    這篇文章主要介紹了C#使用WebClient實現(xiàn)文件上傳的操作步驟,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-11-11
  • C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫

    C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫

    這篇文章介紹了C#跨平臺開發(fā)之使用C/C++生成的動態(tài)鏈接庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#實現(xiàn)調(diào)用迅雷下載的方法

    C#實現(xiàn)調(diào)用迅雷下載的方法

    這篇文章主要介紹了C#實現(xiàn)調(diào)用迅雷下載的方法,非常實用的一個技巧,對于進(jìn)行C#程序設(shè)計有很好的借鑒價值,需要的朋友可以參考下
    2014-08-08
  • 詳解C# TimeSpan 計算時間差(時間間隔)

    詳解C# TimeSpan 計算時間差(時間間隔)

    本篇文章主要介紹了C# TimeSpan 計算時間差(時間間隔),非常具有實用價值,需要的朋友可以參考下。
    2016-12-12
  • C#實現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法

    C#實現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法

    這篇文章主要介紹了C#實現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法,涉及C#數(shù)組與字符串的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • Unity實現(xiàn)鼠標(biāo)拖動3D物體

    Unity實現(xiàn)鼠標(biāo)拖動3D物體

    這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)鼠標(biāo)拖動3D物體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • C#算法之冒泡排序、插入排序、選擇排序

    C#算法之冒泡排序、插入排序、選擇排序

    這篇文章介紹了C#算法之冒泡排序、插入排序、選擇排序,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • C#實現(xiàn)用于操作wav聲音文件的類實例

    C#實現(xiàn)用于操作wav聲音文件的類實例

    這篇文章主要介紹了C#實現(xiàn)用于操作wav聲音文件的類,實例分析了C#操作wav音頻文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03

最新評論

佛冈县| 济南市| 和龙市| 邹平县| 沁阳市| 甘泉县| 唐河县| 连南| 巴马| 舒兰市| 永泰县| 米林县| 阳泉市| 上林县| 长寿区| 札达县| 诸暨市| 冕宁县| 玉溪市| 武鸣县| 大冶市| 莲花县| 汶上县| 平潭县| 多伦县| 辽源市| 台南县| 盐亭县| 中山市| 沂水县| 饶阳县| 武威市| 桃江县| 根河市| 永福县| 廊坊市| 海晏县| 华容县| 静海县| 凤冈县| 吉木乃县|