用头像模仿天狗食月

简介: 用头像模仿天狗食月

用头像模仿天狗食月

今天来了兴趣,用头像模仿了一下天狗食月,那么什么是天狗食月呢?

所谓天狗其实就是月食,以前古人不了解这个,所以说月亮被狗吃了,其实是自然界的一种现象,当太阳、地球、月亮三者恰好或几乎在同一条直线上时(地球在太阳和月球之间),太阳到月球的光线便会部分或完全地被地球掩盖,产生月食。

本文章主要用了Jpanel,那么什么是Jpanel呢?

JPanel 是 Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField 等,功能是对窗体上的这些控件进行组合。

本文主要用到的就是JPanel的paint方法,一看这个方法就是画画的意思。

代码展示:

import lombok.extern.slf4j.Slf4j;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.*;

/**
 * @Author xiepanpan
 * @Description //吃月亮
 * @Date 9:05 2021/9/8
 * @Param
 * @return
 **/
@Slf4j
public class XppMoonPanel extends JPanel{
   int x=700;
   public void startRun(){
      new Thread(){
         public void run(){
            while(true){
               //头像的横坐标坐标不断自增
               //这样去接近月亮和远离,造成天狗食月的效果
               for (int i=0;i<1024;i++){
                  x++;
                  if(x>1024){
                     x=0;
                  }
               }
               try {
                  //让线程休眠10毫秒
                  Thread.sleep(10);
               }
               catch (InterruptedException e) {
                  log.info("",e);
               }
               //自动刷新屏幕,调用paint()方法
               repaint();
            }
         }
      }
      .start();
   }

   /*
    * @Author xiepanpan
    * @Description //开始画
    * @Date 9:01 2021/9/8
    * @Param [g]
    * @return void
    **/
   public void paint(Graphics g){
      super.paint(g);
      //天空颜色
      this.setBackground(Color.BLACK);

      //爱心星空
      g.setColor(Color.RED);
      for (int i = 0; i < 20; i++) {
         g.drawString("❤", (int) (Math.random() * 1024), (int) (Math.random() * 768));
      }

      //月亮
      g.setColor(Color.yellow);
      g.fillArc(500, 100, 200, 200, 0, 360);

      ImageIcon icon = new ImageIcon("D:\\1.png");
      //设置头像将去覆盖月亮
      g.drawImage(icon.getImage(),x,100,200,200,this);
   }
}

启动类:

import javax.swing.JFrame;

/**
 * @Author xiepanpan
 * @Description //启动
 * @Date 9:06 2021/9/8
 * @Param
 * @return
 **/
public class XppMoonFrame {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(1024, 768);
        frame.setLocation(100, 100);
        XppMoonPanel panel = new XppMoonPanel();
        frame.add(panel);
        panel.startRun();
        frame.setVisible(true);
    }
}

下面我简单说一下大体思路,其实很简单:

  1. 新建一个类继承Jpanel 重写它的paint方法
  2. 方法里画天空 月亮和星星 然后加载一张图片 这种图片用来覆盖月亮
  3. 然后不断改变图片的位置,,从而实现天狗食月的效果

最后我将效果图给大家展示一下:

image-20210908094057333

效果图可以说是相当漂亮,jym快来试一试吧~,喜欢的jym给我点个赞再走哦,您的赞是我前进最大的动力的呢~ 哈撒尅!

相关文章
|
11月前
|
人工智能 数据安全/隐私保护
利用D-ID让你的照片能说话,制作口播视频
利用D-ID让你的照片能说话,制作口播视频
353 0
利用D-ID让你的照片能说话,制作口播视频
|
11月前
|
人工智能 vr&ar
利用ChatGPT + Midjoureny 制作自己卡通头像
利用ChatGPT + Midjoureny 制作自己卡通头像
238 0
利用ChatGPT + Midjoureny 制作自己卡通头像
|
机器学习/深度学习 人工智能 开发者
尼日利亚学生使用 PAI 打造卡通头像神器|学习笔记
快速学习尼日利亚学生使用 PAI 打造卡通头像神器。
65 0
|
机器学习/深度学习 并行计算 PyTorch
动手玩玩头像动漫化
动手玩玩头像动漫化
202 0
动手玩玩头像动漫化
|
JSON 文字识别 API
python+百度api将人物头像动漫化
python+百度api将人物头像动漫化
python+百度api将人物头像动漫化
|
搜索推荐 Java
这个开源项目绝绝子,一键生成好玩的矢量风格头像!
最近逛 GitHub,发现了一个非常好玩的开源项目——头像生成器,给大家分享一下~
481 0
这个开源项目绝绝子,一键生成好玩的矢量风格头像!
|
小程序 JavaScript 程序员
【开源】【猫咪卡通变 - 小程序】拍摄猫咪或上传猫咪照片,使其转化为卡通猫咪.(且上传图片必须为猫咪)
废话不多说,直接看吧! 涉及技术:微信小程序云开发 涉及API接口:百度云-图像增强、百度云-图像识别
209 0
【开源】【猫咪卡通变 - 小程序】拍摄猫咪或上传猫咪照片,使其转化为卡通猫咪.(且上传图片必须为猫咪)
|
前端开发 JavaScript
前端培训-初级阶段-场景实战(2019-05-16)-聊天头像-微信头像-群组头像
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。 场景实战这块内容每个人的内容都不一样。所以最近的更新基本都是我遇到并解决掉的问题。后期会吧他们的内容贴地址。
131 0
前端培训-初级阶段-场景实战(2019-05-16)-聊天头像-微信头像-群组头像
|
机器学习/深度学习 文字识别 小程序
PyHubWeekly | 第十五期:你的专属卡通头像
本期为大家推荐GitHub上5个优质的Python项目,它们分别是: •photo2cartoon •jumpcutter •mkdocs •chineseocr •streamlit
PyHubWeekly | 第十五期:你的专属卡通头像
|
机器学习/深度学习 编解码 人工智能
Photoshop把AI论文demo打包实现了:照片上色、改年龄、换表情只需要点点鼠标
我们见过很多神经网络上色、换表情、修改年龄的研究和应用,但它们往往只存在于 GitHub 上,距离「人人能用」还有一段距离。但最近,推出 Photoshop 的 Adobe 这次终于有所表示了:你们论文里的效果,我们打包实现了。
188 0
Photoshop把AI论文demo打包实现了:照片上色、改年龄、换表情只需要点点鼠标