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

这篇具有很好参考价值的文章主要介绍了国庆期间“头像+国旗”玩法是如何实现的?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

制作原理

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

项目架构设计

演示项目为Winform窗体应用程序,项目具体信息如下:

项目框架:

.NET Framework 4.8

项目架构和窗体设计:

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

五星红旗模板准备:

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

代码实现

选择头像代码:
 /// <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("保存成功");
            }
        }

效果演示

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

源码工具获取

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

友情提示:仅供学习研究使用,切勿非法使用!文章来源地址https://www.toymoban.com/news/detail-711814.html

到了这里,关于国庆期间“头像+国旗”玩法是如何实现的?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 国庆中秋特辑(四)MySQL如何性能调优?上篇

    国庆中秋特辑系列文章: 国庆中秋特辑(八)Spring Boot项目如何使用JPA 国庆中秋特辑(七)Java软件工程师常见20道编程面试题 国庆中秋特辑(六)大学生常见30道宝藏编程面试题 国庆中秋特辑(五)MySQL如何性能调优?下篇 国庆中秋特辑(四)MySQL如何性能调优?上篇 国庆

    2024年02月08日
    浏览(46)
  • 国庆中秋特辑(八)Spring Boot项目如何使用JPA

    国庆中秋特辑系列文章: 国庆中秋特辑(八)Spring Boot项目如何使用JPA 国庆中秋特辑(七)Java软件工程师常见20道编程面试题 国庆中秋特辑(六)大学生常见30道宝藏编程面试题 国庆中秋特辑(五)MySQL如何性能调优?下篇 国庆中秋特辑(四)MySQL如何性能调优?上篇 国庆

    2024年02月08日
    浏览(55)
  • 如何吸引消费者?电商创业的期间需要解决的三类问题,看完就懂了

    其实每个创业者个人的世界观,定义了你对未来的追求。可能在早期创业的时候,你就是想做一个不错的、赚钱的企业,但后面我把企业分为三类: 一类企业是解决社会问题 二类企业解决的是行业问题 三类企业解决的是老板个人的问题。 什么叫思维?喇叭喊得再响,广告投

    2024年02月09日
    浏览(56)
  • xhs图片获取并且转换成PDF,实现了我考研期间一直想实现的想法

    对于一些xhs图文,很多人其实想把它的图片保存到本地,尤其是下图所示的考研英语从文章中背单词,不说别人,我就是这样的。 我在考研期间就想实现把图片批量爬取下来,转成PDF,方便一篇一片阅读进行观看,否则就得像我最开始的时候一样,写在打印出来的纸上,不说

    2024年04月25日
    浏览(38)
  • 基于Java+SpringBoot+vue等疫情期间在线网课管理系统详细设计实现

    博主介绍 : ✌ 全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取联系 🍅 精彩专栏 推荐订阅 收藏👇🏻👇🏻  java项目精品实战案例《100套

    2024年02月20日
    浏览(41)
  • 你不知道的vue3:使用runWithContext实现在非 setup 期间使用inject

    日常开发时有些特殊的场景需要在非 setup 期间调用 inject 函数,比如app中使用 provide 注入的配置信息需要在发送 http 请求时带上传给后端。对此我们希望不在每个发起请求的地方去修改,而是在发起请求前的拦截进行统一处理,对此我们就需要在拦截请求的函数中使用 injec

    2024年01月17日
    浏览(50)
  • 通过「内网穿透」技术,实现出差期间远程访问企业局域网中的象过河ERP系统

    ERP系统对于企业来说重要性不言而喻,不管是财务、生产、销售还是采购,都需要用到ERP系统来协助。但ERP中这些重要数据属于企业机密文档,往往需要本地化管理,只能部署在企业内网之下。 有时候我们会遇到在外需要远程登录ERP临时处理紧急事务,我们可以通过内网穿透

    2024年02月10日
    浏览(40)
  • NFT项目遇冷,熊市下如何寻求新的叙事玩法?

    2021 年是 NFT 的元年,NFT 市场在 2022 初达到 48 亿美金的交易量顶峰,于今年 6 月出现断崖式下滑 opensea 月交易量仅 6.9 亿美金。不论是 NFT 玩家通过社区的反馈还是分析师通过对链上数据进行分析,都纷纷表示 NFT 寒冬将至。通过参考 opensea 上的 NFT 每月售出 NFT 的数量来看,

    2023年04月08日
    浏览(34)
  • FFMPEG命令生成各国国旗

    先画个五角星 在100x100的画布P1中,先画一个三角形M ffplay -f lavfi -i color=ffffff00:100x100[white];[white]geq=r=\\\'if(gt(X*tan(72*PI/180),Y),r(X,Y),255)\\\':g=\\\'if(gt(X*tan(72*PI/180),Y),g(X,Y),255)\\\':b=\\\'if(gt(X*tan(72*PI/180),Y),b(X,Y),0)\\\' 此三角形M水平镜像后得到M1, M1与M水平方向并列排布,得到200x100的画布P2,内部为

    2024年01月17日
    浏览(34)
  • 荷兰国旗问题

    问题 给一个数组,需要把其中的数字,根据 num 按三个区域划分开( 小于num 、 等于num 、 大于num ) 不要有序。 思路 注意:向前 == 向左 向后 == 向右 需要两个变量 under 、 upwords ,在 under 之前的为小于区域,在 upwords 之后为大于区域 利用变量 i 遍历数组: arr[i] num ,交换 arr[

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包