首页 > 其他分享 >国庆期间“头像+国旗”玩法是如何实现的?

国庆期间“头像+国旗”玩法是如何实现的?

时间:2023-09-28 11:22:22浏览次数:40  
标签:index 国旗 Image 玩法 head Height 头像 templateFileInfos

前言

随着一年一度的国庆假期越来越近,身边的国庆氛围也越来越重,很多人也开始换上了渐变国旗头像,提前为祖国母亲庆生。那每年都很火的渐变国旗头像要如何制作呢?其实一点也不难!接下来就分享一种渐变国旗头像生成方法。

制作原理

上传原始微信或其他头像,将头像的Image对象用Graphics创建返回GDI+对象,然后用GDI+对象在原始头像指定位置进行追加绘制指定大小的图像渲染显示。

项目架构设计

项目框架:

.NET Framework 4.8

项目架构和窗体设计:

image

五星红旗模板准备:

image

代码实现

选择头像代码:
 /// <summary>
        /// 选择头像
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_select_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);//初始路径为桌面
            openFileDialog.Filter = "头像图片|*.png;*.jpg";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                pic_old.Image = Image.FromFile(openFileDialog.FileName);
            }
        }
      
生成和切换模板代码
 /// <summary>
        /// 生成或切换模板事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_change_Click(object sender, EventArgs e)
        {
            GenerateOrChangeTemplate();
        }
        
        /// <summary>
        /// 生成头像或切换模板生成头像
        /// </summary>
        private void GenerateOrChangeTemplate()
        {
            try
            {
                if (templateFileInfos.Length == 0)
                {
                    MessageBox.Show("红旗模板集为空,请添加", "提示", MessageBoxButtons.OK);
                    return;
                }

                if (index >= templateFileInfos.Length)
                {
                    index = 0;
                }
                Image head = (Image)pic_old.Image.Clone();
                Image template = Image.FromFile(templateFileInfos[index].FullName);
                Graphics graphics = Graphics.FromImage(head);

                if (templateFileInfos[index].Name.StartsWith("all_"))
                {
                    graphics.DrawImage(template, 0, 0, head.Width, head.Height);
                }
                else if (templateFileInfos[index].Name.StartsWith("right_"))
                {
                    int x = head.Width / 4 * 3;
                    int y = head.Height / 4 * 3;
                    int w = head.Width / 4;
                    int h = head.Height / 4;
                    graphics.DrawImage(template, x, y, w, h);
                }
                else if (templateFileInfos[index].Name.StartsWith("left_"))
                {
                    int y = head.Height - template.Height;
                    if (y < 0) y = 0;
                    graphics.DrawImage(template, 0, y, head.Width, head.Height);
                }
                pic_new.Image = head;
                index++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("出错了:"+ ex.Message,"警号",MessageBoxButtons.OK);
            }
        }
保存代码
 /// <summary>
        /// 保存重新绘制的图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_save_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = "图片文件|*.png";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                pic_new.Image.Save(saveFileDialog.FileName, ImageFormat.Png);
                MessageBox.Show("保存成功");
            }
        }

效果演示

image

源码工具获取

关注公众号,后台回复关键字:五星红旗头像

友情提示:仅供学习研究使用,切勿非法使用!

标签:index,国旗,Image,玩法,head,Height,头像,templateFileInfos
From: https://www.cnblogs.com/wml-it/p/17735279.html

相关文章

  • 记录--Vue3 + Fabricjs 定制国庆专属头像
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助生在国旗下,长在春风里!国庆将至,采黎为大家带来定制头像2.0(国庆头像),让我们用代码的形式为祖国庆生!欢迎大家点赞收藏加关注哦前言想看效果或者想定制春节头像的小伙伴请直奔效果区域;想一睹定制头像2.0小工具的......
  • 解锁Mybatis-Plus条件构造器的全新玩法,Spring Boot开发再也不用愁!
    ......
  • Soul创新社交元宇宙玩法,满足Z世代年轻人的社交需求
    作为上线于2016年的新型社交平台,SoulApp以“不看颜值,看兴趣”吸引了大量年轻人在平台互动、交流,也沉淀了相应的用户画像、兴趣图谱、社交关系。在不断服务用户、为其提供更好的社交体验的过程中,Soul找到了能够更高效、优质的实现人与人、人与内容、人与技术连接的最佳路径,也......
  • 甘特图的这些新玩法,你都知道吗?
    摘要:本文由葡萄城技术团队于博客园发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言甘特图是项目管理、生产排程、节点管理中非常常见的一个功能。那么,有没有一种方法能够帮助将甘特图引入到系统中,让数据的进度、排程数据的......
  • 国庆微信头像DIY:轻松打造个性化头像
    前言国庆节马上要到了,今天就教你如何从0到1使用canvas生成国庆风微信头像。本文包含以下内容:vue3项目搭建,需求分析canvas合成图片原理github自动化部署开发过程遇到的问题及解决方案文末附源码及在线体验地址~搭建项目,分析需求项目的话就直接使用脚手架生成一个Vue3......
  • 那些让我世界观崩塌的c/c++玩法
    if('\0'==0){printf("true");}else{printf("false");}----------------------------------------------inti=false; if('\0'||0||NULL||i){ printf("true&q......
  • Intel正式发布雷电5:120Gbps带宽、240W充电逆天!玩法远胜USB4 2.0
    Intel正式发布了全新一代的Thunderbolt5接口标准,也就是雷电5,无论传输速度还是连接能力,都实现了一次巨大的飞跃,更是展示了基于雷电5的新一代笔记本、扩展坞原型。这里,我们就看看雷电5到底带来了哪些变化,可以如何改变我们的工作、生活和娱乐方式,以及Intel在背后有怎样的思考,做出了......
  • 弹幕游戏直播新玩法疯狂吸金
      弹幕游戏直播新玩法:疯狂吸金方法  一、弹幕互动玩法  在直播间互动过程中,所有的用户都是其中的一员,只要在直播间发出一个字就可以参与其中,加入阵营。一旦成为一方阵营,只需轻点屏幕、点个赞或打出一个666,就可以成功招募出一个基础兵种,而你的大名也会在屏幕上显示出......
  • AI艺术写真头像二维生成分销公众号小程序开源版开发
    AI艺术写真头像二维生成分销公众号小程序开源版开发以下是AI艺术写真头像二维生成分销公众号小程序的功能列表:用户注册和登录功能:用户可以通过手机或邮箱注册和登录账号。AI艺术写真头像生成功能:用户可以上传照片,通过AI技术生成艺术风格的写真头像。二维生成功能:用户可以将生成的艺......
  • 开心农场软件-乡村玩法
      开心农场app游戏软件属于是一款农业种植养殖的娱乐软件,玩法不同,其中就有乡村的元素融入了进去。乡村玩法也是一种独特的玩法,让玩家在游戏中扮演农夫的角色。在农场里玩家以农夫的角色,在游戏中种植,养殖,各种的动物,农夫有自己的农场面积,也可以扩充面积。玩家在种植各种的作物,......