重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用java代码模拟一张图片可以这样操作:1.创建BufferedImage类
为企业提供成都网站设计、成都做网站、网站优化、全网营销推广、竞价托管、品牌运营等营销获客服务。创新互联拥有网络营销运营团队,以丰富的互联网营销经验助力企业精准获客,真正落地解决中小企业营销获客难题,做到“让获客更简单”。自创立至今,成功用技术实力解决了企业“网站建设、网络品牌塑造、网络营销”三大难题,同时降低了营销成本,提高了有效客户转化率,获得了众多企业客户的高度认可!
2.根据BufferedImage类得到一个Graphics2D对象
3.根据Graphics2D对象进行逻辑操作
4.处理绘图
5.将绘制好的图片写入到图片
下面是我以前做的小程序,希望能给你点帮助!
package menu;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DaYin extends JFrame implements ActionListener{
public DaYin() {
Container c=this.getContentPane();
c.setLayout(new BorderLayout());
JMenuBar jmb=new JMenuBar();
JMenu jm=null;
jm=new JMenu("文件");
jmb.add(jm);
jm=new JMenu("编辑");
jmb.add(jm);
jm=new JMenu("打印");
JMenuItem jmi=new JMenuItem("打印预览");
jmi.addActionListener(this);
jm.add(jmi);
jmb.add(jm);
jm=new JMenu("帮助");
jmb.add(jm);
this.setJMenuBar(jmb);
this.setSize(1024,768);
this.setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String[] args) {
new DaYin();
}
public void update(Graphics g){
g.setColor(Color.black);
String title[]={"摘要","科目","子目或户名","借方金额","贷方金额"};
String danwei[]={"千","百","十","万","千","百","十","元","角","分"};
int csx=200;//打印x的初始坐标
int csy=200;//打印y的初始坐标
int x=csx;
int y=csy;
int a=x+20;//打印字体x的初始坐标
int b=y+20;//打印字体y的初始坐标
int row=7;//一共打印出几条横线
int cul=5;//一共打印出几条竖线
int hangju=30;//线与线之间的纵向间距
int lieju=100;//线与线之间的横向间距
int yy=hangju*row+y;
int c=yy+20;
g.setFont(new Font("行楷",Font.TYPE1_FONT,24));
g.drawString("记 账 凭 证", x+160, y-40);//打印出记账凭证这几个字
g.drawLine(x+100, y-30, x+340, y-30);//打印出记账凭证下面的那条线
g.setFont(new Font("行楷",Font.TYPE1_FONT,13));
g.drawString("年 月 日 第_______号", x+260, y-10);
//g.drawLine(x+430, y-10, x+470, y-10);
for(int i=0;i=row;i++){
g.drawLine(x, y, cul*lieju+x+25, y);//此循环用于画出表格的行
if(i==0)
y+=hangju*2;
else
y+=hangju;
}
y=csy;
g.drawLine(x+lieju*3, y+hangju, cul*lieju+x, y+hangju);//打印出第一行半的横线
for(int j=0;j=cul;j++){
g.drawLine(x, y, x, row*hangju+y);//此循环用于画出表格的列
x+=lieju;
}
x=csx;
for(int z=0;zcul;z++){
g.setColor(Color.red);//设置颜色
g.setFont(new Font("",Font.TYPE1_FONT,13));//设置表头字体
if(z3)
g.drawString(title[z], a, b+hangju/2);
else
g.drawString(title[z], a, b);//为表格添加表头
a+=lieju;
}//76-89打印出一个表格形状
int xx=lieju*3+x+10;
for(int v=0;v=9;v++){
g.drawLine(xx, y+hangju, xx, row*hangju+y+hangju);//此循环用于画出表格的列
g.setFont(new Font("",Font.TYPE1_FONT,11));
g.drawString(danwei[v], xx-10, y+hangju+20);//为表格添加表头
if(v%2==0)
g.setColor(Color.red);//设置颜色
else
g.setColor(Color.BLUE);//设置颜色
xx+=10;
}
for(int n=0;n9;n++){
g.drawLine(xx, y+hangju, xx, row*hangju+y+hangju);//此循环用于画出表格的列
g.drawString(danwei[n],xx-10, y+hangju+20);//为表格添加表头
if(n%2==0)
g.setColor(Color.red);//设置颜色
else
g.setColor(Color.BLUE);//设置颜色
xx+=10;
}
g.drawString(danwei[9],xx-10, y+hangju+20);
g.setColor(Color.black);//设置颜色
for(int i=0;i=1;i++){
g.drawLine(x,yy , cul*lieju+x, yy);//此循环用于画出表格的行
yy+=hangju;
}
yy=hangju*row+y;
for(int j=0;j=3;j++){
g.drawLine(x, yy, x, (row+1)*hangju+y);//此循环用于画出表格的列
if(j0){
x+=lieju;
}else{
x+=lieju*3;
}
}//112-128打印出表格的最后一行单元格
x=csx;
g.setFont(new Font("",Font.TYPE1_FONT,13));
g.drawString("合 计",x+60, c);
g.drawString("会计主管 记账 出纳 审核 制证", x+30, yy+50);
g.drawLine(cul*lieju+x+25, y, cul*lieju+x+25, (row+1)*hangju+y);//打印出最后一列
g.drawString("记",cul*lieju+x+6, y+15);
g.drawString("账", cul*lieju+x+6, y+35);
g.drawString("√", cul*lieju+x+6, y+55);//134-136为最后一列写入字体
g.drawString("附",cul*lieju+x+35, y+75);
g.drawString("件", cul*lieju+x+35, y+95);
g.drawString("张", cul*lieju+x+35, y+175);//134-136为最后一列后写入字体
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("打印预览")){
this.repaint();
}
}
}
使用drawLine()做了一个记账凭证。
执行点击"打印"子菜单"打印预览"就可显示出我们所画的"记账凭证表"
希望这个小程序能够给你点灵感
使用java画圆要用到绘图类Graphics,下面是实例代码和运行效果:
package com.dikea.demo01;
import java.awt.*;
import javax.swing.*;
// java绘图原理
public class demo_01 extends JFrame {
MyPanel mp = null;
public static void main(String[] args) {
// TODO 自动生成的方法存根
demo_01 demo01 = new demo_01();
}
public demo_01(){
mp = new MyPanel();
this.add(mp);
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
// 定义一个MyPanel面板,用于绘图区域
class MyPanel extends JPanel{
//覆盖JPanel
// Graphics 是绘图的重要类,可以理解成一支画笔
public void paint(Graphics g){
// 1. 调用父类函数完成初始化任务
// 这句话不可以少
super.paint(g);
// 先画出一个圆圈
g.drawOval(100, 100, 30, 30);
}
}
代码复制进ide编程工具,运行效果如下:
下面是用 Java 语言画一个红底五角星的代码示例:
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics;
import javax.swing.JFrame; import javax.swing.JPanel;
public class FivePointedStar {
public static void main(String[] args) {
JFrame frame = new JFrame("Five Pointed Star");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FivePointedStarPanel panel = new FivePointedStarPanel();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
class FivePointedStarPanel extends JPanel {
public FivePointedStarPanel() {
setPreferredSize(new Dimension(300, 300));
setBackground(Color.WHITE);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
int xPoints[] = {150, 200, 250, 225, 175, 125, 100, 125};
int yPoints[] = {100, 50, 100, 150, 150, 100, 50, 100};
int nPoints = 8; g.setColor(Color.RED);
g.fillPolygon(xPoints, yPoints, nPoints); }
}
这段代码中,我们创建了一个 JFrame 窗口,并在窗口中添加了一个 JPanel 面板。在面板中,我们重写了 paintComponent 方法,使用 Graphics 类的 fillPolygon 方法画出了一个五角星。我们设置了五角星的颜色为红色,并设置了面板的背景色为白色。
运行这段代码后,将会弹出一个窗口,显示一个红底五角星。
希望这个示例能帮助你画出一个红底五角星。
public class PrintDiamond2{
public static void main (String args[]){
int TotalLayer=9;
for(int layer=1; layer=TotalLayer; layer++) {
for(int space=1; space=Math.abs((TotalLayer+1)/2-layer); space++){
System.out.print(" ");
}
for(int b=1; b=TotalLayer-2*Math.abs((TotalLayer+1)/2-layer); b++){
System.out.print("*");
}
System.out.println();
}
}
}
用3个for循环打出菱形,可以改变TotalLayer的值来改变菱形的大小
第一个for循环规定多少行
第二个for循环规定每行有多少个空格
第三个for循环规定每行有多少个星号
然后换行,重复2,3循环直到完成第一个循环
最后菱形完成
使用Java的Graphics类进行绘图
Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等