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

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

 更新時(shí)間:2021年11月15日 09:11:19   作者:生產(chǎn)隊(duì)的驢.  
某論壇的評(píng)論區(qū)模塊,發(fā)現(xiàn)這功能很不錯(cuò),琢磨了一晚上做了大致一樣的,用來(lái)當(dāng)做 注冊(cè)模塊 的頭像綁定功能,下面通過(guò)實(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á)式 過(guò)濾字符  \d表示只要0-9的數(shù)字
            //也就是全部數(shù)字

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

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

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

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


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

            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ā)送請(qǐng)求 

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

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

                Stream s = wb.GetResponseStream();
                //把回來(lái)的請(qǐng)求變 一個(gè) 流

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

                    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
            {

            }

        }

前言:

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

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

在這里插入圖片描述

注冊(cè)模塊功能建議:

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

獲取QQ頭像的接口:

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

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

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

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

請(qǐng)?zhí)砑訄D片描述

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

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

界面圖:

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

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

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

請(qǐng)?zhí)砑訄D片描述

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

過(guò)濾輸入的字符:

請(qǐng)?zhí)砑訄D片描述

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

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

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

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

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

匹配字符串:

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

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

判斷匹配好的長(zhǎng)度

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

使用接口QQ接口:

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

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

在這里插入圖片描述

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

定義線程:

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

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

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

發(fā)起請(qǐng)求:

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

接收返回請(qǐng)求:

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

使用流轉(zhuǎn)換:

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

  Stream s = wb.GetResponseStream();
                //把回來(lái)的請(qǐng)求變 一個(gè) 流

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

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

在這里插入圖片描述

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

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

                    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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# 拼圖魔方小游戲

    C# 拼圖魔方小游戲

    這篇文章主要介紹了C# 拼圖魔方小游戲,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • SuperSocket入門--Telnet服務(wù)器和客戶端請(qǐng)求處理

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

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

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

    這篇文章主要介紹了Unity?使用tiledmap解析地圖,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    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#字符串操作的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#給圖片加水印的簡(jiǎn)單實(shí)現(xiàn)方法

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

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

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

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

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

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

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

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

    深入淺析C#泛型類型

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

最新評(píng)論