「使用java画图工具」画图工具可以实现

博主:adminadmin 2023-01-28 10:51:07 473

本篇文章给大家谈谈使用java画图工具,以及画图工具可以实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么用java代码模拟一张图片

用java代码模拟一张图片可以这样操作:1.创建BufferedImage类

2.根据BufferedImage类得到一个Graphics2D对象

3.根据Graphics2D对象进行逻辑操作

4.处理绘图

5.将绘制好的图片写入到图片

用java编写画图工具

要求比较多阿 给你个简单的供参考

import java.awt.*;

import java.awt.event.*;

class Mycanvas extends Canvas

{ int x,y,r;

Mycanvas()

{ setBackground(Color.cyan);

}

public void setX(int x)

{ this.x=x;

}

public void setY(int y)

{ this.y=y;

}

public void setR(int r)

{ this.r=r;

}

public void paint(Graphics g)

{ g.drawOval(x,y,2*r,2*r); //通过Graphics对象画圆

}

}

class WindowCanvas extends Frame implements ActionListener

{ Mycanvas canvas;

TextField inputR,inputX,inputY;

Button b;

WindowCanvas()

{ canvas=new Mycanvas();//创建画布对象

inputR=new TextField(5);

inputX=new TextField(4);

inputY=new TextField(4);

Panel pNorth=new Panel(), pSouth=new Panel();//创建两个面板

pNorth.add(new Label("圆的位置坐标:"));

pNorth.add(inputX);

pNorth.add(inputY);

pSouth.add(new Label("圆的半径:"));

pSouth.add(inputR);

b=new Button("确定");

b.addActionListener(this);

pSouth.add(b);

add(canvas,BorderLayout.CENTER); //添加画布对象到中央区域

add(pNorth,BorderLayout.NORTH);

add(pSouth,BorderLayout.SOUTH);

setBounds(100,100,300,200);

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{ int x,y,r;

try { x=Integer.parseInt(inputX.getText());

y=Integer.parseInt(inputY.getText());

r=Integer.parseInt(inputR.getText());

canvas.setX(x); //设置自定义画布对象的实例变量x

canvas.setY(y);//设置自定义画布对象的实例变量y

canvas.setR(r);//设置自定义画布对象的实例变量r

canvas.repaint();//重画自定义画布对象

}

catch(NumberFormatException ee)

{ x=0;y=0;r=0;

}

}

}

public class Example18

{ public static void main(String args[])

{ new WindowCanvas();

}

}

用Java一个简单的画图程序

下面是我以前做的小程序,希望能给你点帮助!

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实现画图工具颜色填充怎么实现或判断

可以用扫描线种子算法

扫描线种子填充算法的基本过程如下:当给定种子点(x, y)时,首先分别向左和向右两个方向填充种子点所在扫描线上的位于给定区域的一个区段,同时记下这个区段的范围[xLeft, xRight],然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来。反复这个过程,直到填充结束。

扫描线种子填充算法可由下列四个步骤实现:

(1) 初始化一个空的栈用于存放种子点,将种子点(x, y)入栈;

(2) 判断栈是否为空,如果栈为空则结束算法,否则取出栈顶元素作为当前扫描线的种子点(x, y),y是当前的扫描线;

(3) 从种子点(x, y)出发,沿当前扫描线向左、右两个方向填充,直到边界。分别标记区段的左、右端点坐标为xLeft和xRight;

(4) 分别检查与当前扫描线相邻的y - 1和y + 1两条扫描线在区间[xLeft, xRight]中的像素,从xLeft开始向xRight方向搜索,若存在非边界且未填充的像素点,则找出这些相邻的像素点中最右边的一个,并将其作为种子点压入栈中,然后返回第(2)步;

如何用java实现画图

使用Java的Graphics类进行绘图

Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等

使用java画图工具的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于画图工具可以实现、使用java画图工具的信息别忘了在本站进行查找喔。