zoukankan      html  css  js  c++  java
  • 给你的头像+1

    记得那些年我们玩过的头像+1,恶作剧让朋友圈里的人都以为有人和他说话~
     
     
     
    思路,刚学习完Swing,使用Java中Java2D图形操作库进行绘制
    参考代码如下:
     1 import javax.swing.*;
     2 import java.awt.*;
     3 import java.awt.font.*;
     4 import java.awt.geom.*;
     5 import java.util.Scanner;
     6 
     7 /**
     8  * Created by CAD on 2016/12/1.
     9  */
    10 public class ImagePlusOne {
    11     public static void main(String[] args){
    12         Scanner in = new Scanner(System.in);
    13         String imageUrl = in.next();  //输入路径,注意转义
    14         int num = in.nextInt();  //输入图中数字
    15         EventQueue.invokeLater(new Runnable() {
    16             @Override
    17             public void run() {
    18                 JFrame frame = new ImageFrame(imageUrl,num);
    19                 frame.setTitle("imageTest");
    20                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    21                 frame.setVisible(true);
    22             }
    23         });
    24     }
    25 }
    26 
    27 class ImageFrame extends JFrame {
    28     private Image image;
    29     public ImageFrame(String url,int n){
    30         ImageComponent imageComponent = new ImageComponent(url,n);
    31         add(imageComponent);
    32         image = imageComponent.getImage();
    33         setSize(image.getWidth(this) + 45,image.getHeight(this) + 45);
    34         setLocationByPlatform(true);
    35     }
    36 }
    37 
    38 class ImageComponent extends JComponent {
    39     private Image image;
    40     private int num;
    41 
    42     public ImageComponent(String url,int an){
    43         image = new ImageIcon(url).getImage();
    44         num = an;
    45     }
    46 
    47     public Image getImage() {
    48         return image;
    49     }
    50     public void paintComponent(Graphics g){
    51         if (image == null) return ;
    52         int imageWidth = image.getWidth(this);
    53         int imageHeight = image.getHeight(this);
    54 
    55         // draw the image int the upper-left corner
    56         g.drawImage(image,0,0,null);
    57 
    58         // 画圆
    59         Graphics2D g2 = (Graphics2D)g;
    60         double radius = imageHeight / 10;  // 圆半径
    61         double centerX = imageWidth - radius;
    62         double centerY = radius;
    63         Ellipse2D circle = new Ellipse2D.Double();
    64         circle.setFrameFromCenter(centerX,centerY,centerX + radius,centerY + radius);
    65         g2.setPaint(Color.RED);  // 设置颜色
    66         g2.fill(circle);  //填充圆颜色
    67 
    68         String numTemp = "";
    69         if(num >= 100)
    70             numTemp += "99+";
    71         else
    72             numTemp += num;
    73 
    74         // 设置字体
    75         Font f = new Font("Arial",Font.BOLD,(int)radius);
    76         g2.setFont(f);
    77 
    78         // 得到包围字体的矩形,为了让字体近似居中
    79         FontRenderContext context = g2.getFontRenderContext();
    80         Rectangle2D fontBounds = f.getStringBounds(numTemp,context);
    81 
    82         double numX = centerX - fontBounds.getWidth() / 2;
    83         double numY = centerY + fontBounds.getHeight() / 3;
    84         g2.setPaint(Color.WHITE);
    85         g2.drawString(numTemp,(int)numX,(int)numY);
    86     }
    87 }

    图片处理结果如下:

        

     
    只为训练自己,时刻锤炼一个程序员最基本的技能!
  • 相关阅读:
    Cheatsheet: 2011 03.19 ~ 03.31
    Cheatsheet: 2011 03.07 ~ 03.14
    Cheatsheet: 2011 04.01 ~ 04.10
    Cheatsheet: 2011 04.20 ~ 04.29
    Java动手动脑02
    Java日报10.5
    java四则运算第三阶段
    验证码界面——Java图形界面
    Java四则运算V3.0
    Java日报10.8
  • 原文地址:https://www.cnblogs.com/coding-wtf/p/6124456.html
Copyright © 2011-2022 走看看