• 也谈QQ表情弹出框的制作


    会飞的鱼前段时间写了篇文章,介绍如何实现类似QQ表情对话框的功能,具体描述见文章《c# 类似于QQ表情弹出框功能的二种实现方法》。刚好最近我也有类似的需求,我刚开始的想法是在Panel中动态创建PictureBox来加载QQ表情,如:

          private void InitImageControl(int colCount, int rowCount)
            {
                for (int i = 0; i < rowCount; i++)
                {
                    for (int j = 0; j < colCount; j++)
                    {
                        PictureBox picBox = new PictureBox();
                        picBox.SizeMode = PictureBoxSizeMode.CenterImage;
                        picBox.Image = @"d:\qqface\1.gif"; //从文件中加载图片
                           Size controlSize = new Size(imgWidth, imgHeight);
                        picBox.Size = controlSize;
                        int controlLoctionX = controlSize.Width * j;
                        int controlLoctionY = controlSize.Height * i;
                        picBox.Location = new Point(controlLoctionX, controlLoctionY);
                        picBox.MouseHover += new EventHandler(picBox_MouseHover);
                        panel1.Controls.Add(picBox);
                    }
                }
            }
    
    这样实现的方式比较简单,但是速度却非常慢,于是就放弃了这个想法。
    突然想到,利用网页来加载图片,效率可能会高很多的(事实证明也是如此),于是考虑在Panel中加载个WebBrowser,然后动态的加载网页来实现。
    首先制作了类似QQ表情对话框展示效果的网页(代码下载),截图如下:
    image 
    由于代码比较简单,就直接贴代码了:
    加载QQ表情

    当网页加载完毕后,给分页链接注册事件

     
    分页事件
     
    这样就基本实现了QQ表情弹出框的需求了,最终截图如下:
    image image
     
    留下的问题:
     
    如何通过点击QQ表情向聊天对话框发送表情了?如果有人感兴趣,可以和我交流。源码下载

     PS:其实如果不用网页加载,直接把图像画在Panel上,也是可以行,效率也是很快,并且控制起来非常方便,过几天我也贴个代码。

     
  • 相关阅读:
    MySQL5.7.17解压版安装
    autocomplete初步使用
    前端面试题:驼峰体与匈牙利语法的相互转换
    前端常用正则表达式
    解决npm报错:Module build failed: TypeError: this.getResolve is not a function
    vue实现对语言的切换,结合vue-il8n。
    大量数据处理的一个思路
    不同格式矢量数据源在MapServer上发布服务后切片缓存效率对比
    CentOS7使用yum安装PostgreSQL和PostGIS
    ArcGIS消除图斑重叠错误
  • 原文地址:https://www.cnblogs.com/coding1016/p/1640874.html
Copyright © 2020-2023  润新知