欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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# 拼圖魔方小游戲,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • SuperSocket入門--Telnet服務(wù)器和客戶端請求處理

    SuperSocket入門--Telnet服務(wù)器和客戶端請求處理

    本文的控制臺項目是根據(jù)SuperSocket官方Telnet示例代碼進(jìn)行調(diào)試的,官方示例代碼:Telnet示例。下面跟著小編一起來看下吧
    2017-01-01
  • Unity?使用tiledmap解析地圖的詳細(xì)過程

    Unity?使用tiledmap解析地圖的詳細(xì)過程

    這篇文章主要介紹了Unity?使用tiledmap解析地圖,本文通過圖文實例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#基于TCP協(xié)議的服務(wù)器端和客戶端通信編程的基礎(chǔ)教程

    C#基于TCP協(xié)議的服務(wù)器端和客戶端通信編程的基礎(chǔ)教程

    這篇文章主要介紹了C#基于TCP協(xié)議的服務(wù)器端和客戶端通信編程的基礎(chǔ)教程,文中講解了C#中TCP編程主要相關(guān)的TcpListener類與TcpClient類用法,需要的朋友可以參考下
    2016-04-04
  • C#將數(shù)字轉(zhuǎn)換成字節(jié)數(shù)組的方法

    C#將數(shù)字轉(zhuǎn)換成字節(jié)數(shù)組的方法

    這篇文章主要介紹了C#將數(shù)字轉(zhuǎn)換成字節(jié)數(shù)組的方法,涉及C#字符串操作的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#給圖片加水印的簡單實現(xiàn)方法

    C#給圖片加水印的簡單實現(xiàn)方法

    這篇文章主要介紹了C#給圖片加水印的簡單實現(xiàn)方法,涉及C#操作圖片的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05
  • 在winform中嵌入第三方軟件窗體的實踐分享

    在winform中嵌入第三方軟件窗體的實踐分享

    這篇文章主要介紹了在winform中如何嵌入第三方軟件窗體的實踐分享,文中通過代碼示例和圖文給大家介紹的非常詳細(xì),具有一定參考價值,需要的朋友可以參考下
    2024-03-03
  • 一文帶你了解C#中抽象方法與虛方法的區(qū)別

    一文帶你了解C#中抽象方法與虛方法的區(qū)別

    這篇文章主要通過簡單的示例為大家詳細(xì)介紹一下C#中抽象方法與虛方法的區(qū)別,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • C#開發(fā)答題贏錢游戲(自動答題器)

    C#開發(fā)答題贏錢游戲(自動答題器)

    現(xiàn)在最火的直播游戲,那就是答題贏錢直播了,如百萬英雄、芝士超人、花椒直播、沖頂大會等等,這些游戲的玩法都很簡單,答對12題即可瓜分獎金了。玩法雖簡單但是完全答對12題難度就挺高了,下面小編給大家?guī)砹薈#開發(fā)答題贏錢游戲,需要的朋友參考下吧
    2018-01-01
  • 深入淺析C#泛型類型

    深入淺析C#泛型類型

    這篇文章主要介紹C#泛型類型,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02

最新評論