本文目录一览:
如何用java实现画图
使用Java的Graphics类进行绘图
Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等
关于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("点击");
}
}
彩虹怎么画
1.画彩虹的底座云彩
首先用半曲线画出云朵的形状,围成三颂一个椭圆形的圆汽哄圈,形成云朵的形状,再在水平线的另一边也画一个,可以大小不同。
2.画彩虹弧线
然后薪塑扯用半圆曲线连接画好的两个云朵,半圆曲线呈圆弧状,画六道线。
3.
给彩虹上色
最后涂上颜色,彩虹的圆弧状涂成彩虹的颜色,白云的可以涂成白色,或者是其他颜色。
1.画彩虹的云彩
首先,画一个羊毛卷的形状,再用办曲线画出云朵的形状,画出三个不同大小的云朵,以及他们的分布位置不同,一个在左边,一个在右边,一个在下边。
2.
画彩虹基本型
然后用彩色画笔画出半圆形弧状连接,其中两个云朵,再用其他颜色的画笔画出半圆弧状,连接另外两朵云朵。
3.
给彩虹涂上颜色
最后颜色涂好之后,彩虹作品就做好了。