「java绘图技巧」如何用java画图
今天给各位分享java绘图技巧的知识,其中也会对如何用java画图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java如何在Frame上画图,是用paint()方法吗?举个实例.
- 2、关于java中画图形的paint方法
- 3、Java程序中图片的使用方法
- 4、java绘图方法drawString如何改变字体
- 5、用java实现一个方法 关于绘制走势图
Java如何在Frame上画图,是用paint()方法吗?举个实例.
一般来说,
paint是系统回调函数,用户不能主动调用,需要进行重绘时,要使用repaint方法,当用户调用repaint方法后,实际上,系统后台调用了paint方法,所以,把的绘制代码或清除代码要写到paint方法中,然后需要绘制或清除的时候,调用repaint方法,就可以了
哦,那就是加载图片,举个例子:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageInfo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String imgPath = "D:\\abc.bmp";
File imgFile = new File(imgPath);
BufferedImage bimg = ImageIO.read(imgFile);
int w = bimg.getWidth();
int h = bimg.getHeight();
for(int x=0; xw; x++){
for(int y=0; yh; y++){
int rgb = bimg.getRGB(x, y);
//...
}
}
}
}
关于java中画图形的paint方法
代码如下:
/**分析下例:我们只是new了一个对象并没有调用Paint()方法那为什么会画出图呢?
* Graphics这个类的对象就是一只画笔,当某容器调用paint()时就会在该容器中画图。
* 当窗口产生时本身就存在一只画笔,我们只需要拿到画笔重写Paint()便可以随心作画。
*每次需要重画的时候就会自动调用paint(Graphics g)(什么时候需要重画呢?如当窗口被覆盖又重新置顶时,当窗口最小化又最大化时等等)
*/
总结:我们想要在容器中画图时只需要做的就是: 在该容器中重写Paint() 系统会自动传给我们画笔,自动调用paint方法按照我们的意愿进行作画。
public class TestGraphics extends Frame. {
public static void main(String []args) {
new TestGraphics("画图",100,100,200,200,Color.white);
}
public TestGraphics(String s,int x,int y,int w,int h,Color c) {
super(s);
this.setBounds(x, y, w, h);
this.setBackground(c);
this.setVisible(true);
}
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.magenta);
g.fillOval(100, 100, 50, 50);
g.setColor(Color.green);
g.fill3DRect(60, 100, 50, 50, false);
g.setColor(c);
}
}
小例子2:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
/**
原理是:在Frame中增加成员变量-容器ArrayList,用它来容纳点,每次点击鼠标就触发了事件:往容器中添加一个点,然后立即调用repaint方法强制画出容器中所有的点来
所以我们利用容器来"装"点,然后通过iterator来遍历画出所有的点。
适配器类:使用适配器类可以只重写我们需要的方法
因为这些适配器类都已经实现了相应的接口即把所有的方法都空实现了一遍 我们只需要重写我们需要的方法即可
repaint -调用- update() - 调用 - paint();
*/
public class MyFrame. extends Frame. {
ArrayListPointal ;//泛型指定容器中只能放入Point
public MyFrame(String s) {
super(s);
al =new ArrayListPoint();
this.setBounds(100, 100, 200, 200);
this.setBackground(Color.darkGray);
this.setVisible(true);
this.addMouseListener(new MouseAdapter(){//匿名类
@Override
public void mousePressed(MouseEvent e) {
MyFrame. f = (MyFrame)e.getSource();//e是事件,e.getSource()是获取事件源即窗口 f
f.al.add(new Point(e.getX(),e.getY())); //而e.getX(),e.getY()则是获取事件发生的x,y坐标
repaint();//每次点击鼠标触发事件时都有了新的点,所以强制要求重画,才能立刻显示出该点否则只有窗口被最小化又最大化后才能看到刚才的点
}
});
//匿名类:在参数处我们传递的是new WindowAdapter() {匿名类体} );他没有名字,我们把它当成WindowAdapter来用,为什么可以这样呢?因为语法上规定了匿名类要么是实现了前面的接口,要么是从前面的类继承,就着前面父类的名字来写类体。当此类与其他类关系不大时可以用匿名类
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g) {
Iterator Pointit= al.iterator();//泛型指定取出元素时只能是point
while(it.hasNext()) {
Point p = it.next();//由于使用泛型这时候就不用强制转换了
Color c = g.getColor();//保护原有颜色
g.setColor(Color.pink);
g.fillOval(p.x-6, p.y-6, 12, 12);
g.setColor(c);
}
}
public static void main(String []args) {
new MyFrame("点击");
}
}
Java程序中图片的使用方法
可通过Icon接口进行图片操作。
new ImageIcon(这里放入图像文件的路径)//此为创建一个对象
getIconWidth()设置图像宽度
getIconHeight()设置图像长度
还有更多的对图片的操作方法,可查看API文档。
下面是加入图片的简单效果源码:package Swing02;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TestIcon {
public TestIcon(){
JFrame jf=new JFrame("加入图片练习");
JPanel jp=new JPanel();
Icon ic=new ImageIcon("C:\\Documents and Settings\\tarena\\桌面\\牵手1.jpg");
JLabel jl=new JLabel(ic,JLabel.CENTER);
JButton jb=new JButton(ic);
GridLayout gl=new GridLayout(3,3);
String[] pos=new String[9];
for(int i=0;ipos.length;i++){
JButton jb1=new JButton();
jp.add(jb1);
jb1.setIcon(ic);
}
jf.add(jp);
jp.setLayout(gl);
//jf.add(jl);
//jf.add(jb);
jf.setLocation(300,200);//设置出现位置
jf.setSize(300,200);//设置大小
jf.setResizable(true);//设置窗口大小不可变
jf.setVisible(true);//设置可见(必须放在最后)
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestIcon();
}
}
关于图片的布局,可把图片加入到JLabel中,然后用布局管理器对JLabel进行布局就好了。
java绘图方法drawString如何改变字体
用setFont()方法修改字体
setFont
public
abstract
void
setFont(Font
font)将此图形上下文的字体设置为指定字体。使用此图形上下文的所有后续文本操作均使用此字体。
参数:
font
-
字体。
比如
Graphics
g
=
panel.getGraphics();
g.setFont(new
Font("Tahoma",
Font.BOLD,
12));
g.drawString("wahahahaha");
用java实现一个方法 关于绘制走势图
我来讲下用Java编写一个绘制图形的小程序吧,你看下有没有用
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
//不规则图形的绘制
public class IrregularShapeDemo extends JFrame {
GeneralPath gPath= new GeneralPath(); //GeneralPath对象实例
Point aPoint;
//构造函数
public IrregularShapeDemo() {
super("不规则图形的绘制"); //调用父类构造函数
enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK); //允许事件
setSize(300, 200); //设置窗口尺寸
setVisible(true); //设置窗口可视
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
public void paint(Graphics g) { //重载窗口组件的paint()方法
Graphics2D g2D = (Graphics2D)g; //获取图形环境
g2D.draw(gPath); //绘制路径
}
public static void main(String[] args) {
new IrregularShapeDemo();
}
protected void processMouseEvent(MouseEvent e) { //鼠标事件处理
if(e.getID() == MouseEvent.MOUSE_PRESSED) {
aPoint = e.getPoint(); //得到当前鼠标点
gPath = new GeneralPath(); //重新实例化GeneralPath对象
gPath.moveTo(aPoint.x,aPoint.y); //设置路径点
}
}
protected void processMouseMotionEvent(MouseEvent e) { //鼠标运动事件处理
if(e.getID() == MouseEvent.MOUSE_DRAGGED) {
aPoint = e.getPoint(); //得到当前鼠标点
gPath.lineTo(aPoint.x, aPoint.y); //设置路径
gPath.moveTo(aPoint.x, aPoint.y);
repaint(); //重绘组件
}
}
这个也是我在远标java上学到的,分享给你!
java绘图技巧的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何用java画图、java绘图技巧的信息别忘了在本站进行查找喔。
发布于:2022-11-22,除非注明,否则均为
原创文章,转载请注明出处。