「java绘图对象」java中的绘图可用什么类
本篇文章给大家谈谈java绘图对象,以及java中的绘图可用什么类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java怎么在JPanel里面绘图
- 2、java绘图,怎么解决显示不流畅的问题?
- 3、Java 获取组件绘图上下文对象 的问题
- 4、Java绘图类Graphics中drawPolygon方法只能画坐标是int的吗?
- 5、java如何在界面中指定坐标画线
- 6、Java中如何在Canvas对象中画图?
Java怎么在JPanel里面绘图
可以实现一个Paintable接口
interface Paintable{ public void paint(Graphics g);}
然后在主类上挂一个Paintable的数组,比如private VectorPaintable drawings;
每鼠标点击一次,就往drawings里面添加一个Paintable对象。
而在主类JPanel的paint中循环依次对drawings中的所有对象进行一次性绘制。
和背景一起绘制也就不多占资源。
也可以外面结合区部重绘repaint(int x, int y, int width, int height)
java绘图,怎么解决显示不流畅的问题?
参考:
1、采用BufferedImage对象进行缓冲
这种方法是最简单,同时也是最常用的双缓冲构建方式,也就是构建一个BufferedImage缓冲当前绘图,所有Graphics操作在其上进行,仅在需要时才将贴图paint于窗体之上,使用上再简单不过,但效率如何呢?文章进行到此处时尚不得而知。
2、采用BufferStrategy构建缓冲区
使用BufferStrategy构建缓冲能够获得系统所提供的硬件加速,Java系统会根据本地环境选择最适合的BufferStrategy。要创建 BufferStrategy ,需要使用 createBufferStrategy() 方法告诉系统你所期望的缓冲区数目(通常使用双缓冲,也就是填入“2”),并使用 getDrawGraphics() 方法在缓冲区之间进行交换,该方法返回下一个要使用的缓冲区。BufferStrategy最大的缺点与优点都在于其受本地图形环境影响,既不会出现很快的图形环境跑出很慢的FPS,也别指望很慢的图形环境跑出很快的FPS。
3、完全在BufferedImage的DataBuffer中进行图像处理
每个BufferedImage都有一个与之对应得WritableRaster对象(getRaster方法获得),通过它我们获得指定BufferedImage的DataBuffer(getDataBuffer方法获得),与方法1类似,我们同样构建一个BufferedImage缓冲当前所有绘图,所有操作都在其上进行,仅在需要时才将贴图paint于窗体之上。但区别在于,由于DataBuffer可以转化为描述BufferedImage象素点的int[],byte[]或short[]等数组集合,因此我们不再使用Java提供的Graphics对象,而是直接操作像素点进行所有绘图的实现。 但是,这样进行数组操作会快吗?
现在我们为其各自构建三个示例,尽量以比较趋同的处理流程构建,分别测算三种方法的具体效率。
Java 获取组件绘图上下文对象 的问题
没见过高手都只是动动嘴的哦??
好 我来告诉你
这个背景静态图片 非常简单...2秒后插入一张小图 也很简单
最快的方式 并不是直接贴本地的图 而是采用图形包 包里的方法
按像素点 一个点一个点的描 类似MFC里的 CBitmap
这样才不会闪烁和延迟 用到Graphics
java.awt
类 Graphics
java.lang.Object
java.awt.Graphics
直接已知子类:
DebugGraphics, Graphics2D
public abstract class Graphics
extends Object
Graphics 类是所有图形上下文的抽象基类,允许应用程序在组件(已经在各种设备上实现)以及闭屏图像上进行绘制。
Graphics 对象封装了 Java 支持的基本呈现操作所需的状态信息。此状态信息包括以下属性:
abstract void clearRect(int x, int y, int width, int height)
通过使用当前绘图表面的背景色进行填充来清除指定的矩形。
abstract void clipRect(int x, int y, int width, int height)
将当前剪贴区与指定的矩形相交。
abstract void copyArea(int x, int y, int width, int height, int dx, int dy)
将组件的区域复制到由 dx 和 dy 指定的距离处。
abstract Graphics create()
创建一个新的 Graphics 对象,它是此 Graphics 对象的副本。
Graphics create(int x, int y, int width, int height)
基于此 Graphics 对象创建一个新的 Graphics 对象,但是使用新的转换和剪贴区域。
abstract void dispose()
释放此图形的上下文以及它使用的所有系统资源。
void draw3DRect(int x, int y, int width, int height, boolean raised)
绘制指定矩形的 3-D 高亮显示边框。
abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
绘制一个覆盖指定矩形的圆弧或椭圆弧边框。
void drawBytes(byte[] data, int offset, int length, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定 byte 数组给定的文本。
void drawChars(char[] data, int offset, int length, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。
abstract boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
绘制指定图像中当前可用的图像。
abstract boolean drawImage(Image img, int x, int y, ImageObserver observer)
绘制指定图像中当前可用的图像。
abstract boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。
abstract boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
绘制指定图像中已缩放到适合指定矩形内部的图像。
abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)
绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。
abstract void drawLine(int x1, int y1, int x2, int y2)
在此图形上下文的坐标系中,使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线。
abstract void drawOval(int x, int y, int width, int height)
绘制椭圆的边框。
abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
绘制一个由 x 和 y 坐标数组定义的闭合多边形。
void drawPolygon(Polygon p)
绘制由指定的 Polygon 对象定义的多边形边框。
abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
绘制由 x 和 y 坐标数组定义的一系列连接线。
void drawRect(int x, int y, int width, int height)
绘制指定矩形的边框。
abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
用此图形上下文的当前颜色绘制圆角矩形的边框。
abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
依据 TextAttribute 类的规范应用指定迭代器的属性,呈现迭代器的文本。
abstract void drawString(String str, int x, int y)
使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。
void fill3DRect(int x, int y, int width, int height, boolean raised)
绘制一个用当前颜色填充的 3-D 高亮显示矩形。
abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
填充覆盖指定矩形的圆弧或椭圆弧。
abstract void fillOval(int x, int y, int width, int height)
使用当前颜色填充外接指定矩形框的椭圆。
abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
填充由 x 和 y 坐标数组定义的闭合多边形。
void fillPolygon(Polygon p)
用图形上下文的当前颜色填充指定 Polygon 对象定义的多边形。
abstract void fillRect(int x, int y, int width, int height)
填充指定的矩形。
abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
用当前颜色填充指定的圆角矩形。
void finalize()
一旦不再引用此图形上下文就释放它。
abstract Shape getClip()
获取当前剪贴区域。
abstract Rectangle getClipBounds()
返回当前剪贴区域的边界矩形。
Rectangle getClipBounds(Rectangle r)
返回当前剪贴区域的边界矩形。
Rectangle getClipRect()
已过时。 从 JDK version 1.1 开始,由 getClipBounds() 取代。
abstract Color getColor()
获取此图形上下文的当前颜色。
abstract Font getFont()
获取当前字体。
FontMetrics getFontMetrics()
获取当前字体的字体规格。
abstract FontMetrics getFontMetrics(Font f)
获取指定字体的字体规格。
boolean hitClip(int x, int y, int width, int height)
如果指定的矩形区域与当前的剪贴区域相交,则返回 true。
abstract void setClip(int x, int y, int width, int height)
将当前剪贴区设置为由给定坐标指定的矩形。
abstract void setClip(Shape clip)
将当前剪贴区域设置为任意的剪贴形状。
abstract void setColor(Color c)
将此图形上下文的当前颜色设置为指定颜色。
abstract void setFont(Font font)
将此图形上下文的字体设置为指定字体。
abstract void setPaintMode()
设置将此图形上下文的绘图模式,以便通过此图形上下文中的当前颜色来覆盖目标。
abstract void setXORMode(Color c1)
将此图形上下文的绘图模式设置为在此图形上下文的当前颜色和新的指定颜色之间交替。
String toString()
返回表示此 Graphics 对象值的 String 对象。
abstract void translate(int x, int y)
将图形上下文的原点平移到当前坐标系中的点 (x, y)。
Java绘图类Graphics中drawPolygon方法只能画坐标是int的吗?
你说得没错
abstract void
drawPolygon(int[] xPoints,
int[] yPoints,
int nPoints)
绘制一个由 x 和 y 坐标数组定义的闭合多边形。
void
drawPolygon(Polygon p)
绘制由指定的 Polygon 对象定义的多边形边框。
abstract void
drawPolyline(int[] xPoints,
int[] yPoints,
int nPoints)
绘制由 x 和 y 坐标数组定义的一系列连接线。
java如何在界面中指定坐标画线
setColor:设置画笔的颜色。
drawLine:在指定坐标的(x1,y1)与(x2,y2)两点之间画条线段。
drawRect:以坐标点(x,y)为左上角,绘制指定宽高的矩形边框。
fillRect:以坐标点(x,y)为左上角,绘制指定宽高的矩形区域。
drawRoundRect:以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形边框。
fillRoundRect:以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形区域。
drawOval:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆轮廓。注意,如果横纵半径的数值相等,此时椭圆就变成了圆形。
fillOval:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆区域。
drawArc:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的圆弧。
fillArc:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的扇形。
setFont:设置画笔的字体。
drawString:在当前位置的横纵偏移距离处绘制文本。
此外,Graphics也支持几种简单的管理操作,包括平移画笔、擦除区域、裁剪画布等功能,对应的处理方法说明如下:
translate:平移画笔至坐标点(x,y)。
clearRect:清除某块矩形区域,该矩形以坐标点(x,y)为左上角,且符合指定宽高。
clipRect:裁剪某块矩形区域,该矩形以坐标点(x,y)为左上角,且符合指定宽高。该方法的执行效果与clearRect正好相反,clearRect方法清除了矩形内部的所有图案;而clipRect方法清除了矩形外部的所有图案,只留下矩形内部的图案。
绘制图案与字符串的过程与绘制图像一样,都是重写自定义控件的paint方法,在该方法中调用画笔对象的各种绘图方法。接下来按照之前的图像视图依样画瓢定义一个绘画视图DrawView,变动之处在于绘制控件的paint方法,并据此演示几种图案的实现效果。首先准备绘制一条黑色线段,线段的起点位于控件的左上角,终点位于控件的右下角,则相应的绘制方法示例如下:
1
2
3
g.setColor(Color.BLACK); // 设置画笔的颜色为黑色
// 在指定坐标的(x1,y1)与(x2,y2)两点之间画条线段
g.drawLine(0, 0, getWidth(), getHeight());
主界面的代码比较简单,有关绘画视图的调用可参考如下的代码片段:
1
2
3
4
5
Panel panelCenter = new Panel(); // 创建中央面板
DrawView draw = new DrawView(); // 创建一个绘画视图
draw.setSize(360, 180); // 设置绘画视图的宽高
panelCenter.add(draw); // 在中央面板上添加绘画视图
frame.add(panelCenter, BorderLayout.CENTER); // 把中央面板添加到窗口的中间位置
运行修改后的测试代码,弹出的线段绘制窗口界面如下图所示。
接着绘制一个矩形边框,假设边框为红色,则对应的绘制方法如下所示:
1
2
3
g.setColor(Color.RED); // 设置画笔的颜色为红色
// 以坐标点(x,y)为左上角,绘制指定宽高的矩形边框
g.drawRect(10, 10, getWidth() - 20, getHeight() - 20);
同样运行测试界面代码,弹出的矩形绘制窗口界面如下图所示。
再绘制一个绿色的圆角矩形,但它是实心的,此时绘制过程应当调用fillRoundRect方法:
1
2
3
g.setColor(Color.GREEN); // 设置画笔的颜色为绿色
// 以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形区域
g.fillRoundRect(10, 10, getWidth() - 20, getHeight() - 20, 50, 50);
运行主界面的测试代码,弹出的圆角矩形绘制窗口如下图所示。
继续绘制一个蓝色的椭圆轮廓,注意它是空心的,此时绘制过程应当调用drawOval方法:
1
2
3
g.setColor(Color.BLUE); // 设置画笔的颜色为蓝色
// 以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆轮廓
g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);
运行主界面的测试代码,弹出的椭圆绘制窗口界面如下图所示。
还可以绘制一个橙色的扇形,所谓扇形是由某段圆弧连接两端的横纵半径组成,因此它相当于实心的圆弧,此时绘制过程应当调用dfillArc方法:
1
2
3
g.setColor(Color.ORANGE); // 设置画笔的颜色为橙色
// 以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的扇形
g.fillArc(10, 10, getWidth() - 20, getHeight() - 20, 0, 90);
运行主界面的测试代码,弹出的扇形绘制窗口界面如下图所示。
最后使用画笔绘制几个文字,同时指定这段文字的颜色、字体以及大小,则对应的绘制方法如下所示:
1
2
3
g.setColor(Color.BLACK); // 设置画笔的颜色为黑色
g.setFont(new Font("大号粗体", Font.BOLD, 50)); // 设置画笔的字体
g.drawString("春天花会开", 50, 50); // 在当前位置的横纵偏移距离处绘制文本
运行主界面的测试代码,弹出的文字绘制窗口界面如下图所示。
Java中如何在Canvas对象中画图?
晚上给你代码,你也可以给个邮件,给你发一个复要点的画图小程序
关于java绘图对象和java中的绘图可用什么类的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。