-
Graphics
2016-06-15 12:58:19Graphics是Java绘图的核心类,它可以支持两种绘图:一种是基本的绘图,如画线、矩形、圆等;另一种是画图像,主要用于动画制作。 要进行绘图,首先要找到一个Graphics类的对象。Graphics类是抽象类,没有办法直接...Graphics是Java绘图的核心类,它可以支持两种绘图:一种是基本的绘图,如画线、矩形、圆等;另一种是画图像,主要用于动画制作。
要进行绘图,首先要找到一个Graphics类的对象。Graphics类是抽象类,没有办法直接生成一个对象来使用,而且它也没有提供任何static方法可供直接调用,那么到底应该如何使用Graphics类呢?update()方法和paint()方法就是其中的一个答案。update()方法和paint()方法所传递的参数就是Graphics类的对象。因此,在绘图的时候,就可以通过重载这两个方法,使用参数对象的绘图方法来进行绘图,这是在动画程序中经常使用的方法。另外,还可以通过getGraphics()方法得到一个Graphics类的对象,这个对象和update()方法和paint()方法中所传递的对象一样,都是该成员所对应的Graphics类的对象。getGraphics()方法有两个来源,一个是继承自Componet类,同时,Image类也提供了getGraphics()方法。得到Graphics类的对象之后,就可使用各种Graphics类的对象的绘图方法。
(1)与绘图操作相关的3个方法分别如下。
public void paint(Graphics g);
paint()方法进行绘图的具体操作,程序员可对此进行重写。
public void update(Graphics g);
update()方法用于更新图形,先清除背景和前景,再调用paint()。
public void repaint();
repaint()方法用于重绘图形,在组件外形发生变化,即大小改变或位置移动时,repaint( )方法立即被系统自动调用,而实际上repaint()方法是自动调用update()方法。
这3个方法在java.awt.Component类中定义。可以参见13.4.1小节中Component类的方法介绍的部分。
(2)Graphics提供的基本的图形绘制方法。Graphics拥有的绘图方法,除了矩形和椭圆形以外,还有多边形、填充图形和三维矩形等。所有方法都是void类型的。
void drawLine(int x1,int y1,int x2,int y2);
drawLine()可绘制直线。参数分别为起点坐标和终点坐标。
void drawArc(int x,int y,int width,int helght,int startAngle,int arcAngle);
drawArc()可绘制弧线。参数分别为左角坐标、宽、高、起始角和终止角。
void drawPolyline(int xPoints[],int yPoints[],int nPoints);
drawPolyline()可绘制折线。参数分别为各点的x坐标、y坐标和折线数。
void drawPloygon(int xPoints[],int yPoints[],int nPoints);
void drawPolygon(Polygon polygon);
以上两个方法提供绘制多边形的功能。
第1个方法的参数分别为各点的x坐标、y坐标和边数。
第2个方法的参数为已定义的多边形对象。
void drawRect(int x,int y,int width,int height);
void drawRoundRect(int x,int y,int width,int height,int arcWidth,intarcHeight);
void fill3DRect(int x,int y,int width,int height,boolean raised);
以上3个方法提供绘制矩形的功能。
第1个方法绘制矩形,参数分别为左角坐标、宽和高。
第2个方法绘制圆角矩形,参数分别为左角坐标、宽、高、弧度和深度。
第3个方法绘制3D矩形,参数分别为左角坐标、宽、高和true。
void drawOval(int x,int y,int width,int height);
drawOval()可绘制椭圆。参数分别为中心坐标、长轴和短轴。
如果要画填充图形,则只需把以上的这几种方法中的draw改为fill即可,参数表是一样的,颜色则可由g.setColor()设定。注意fillRect()可以用来画一根粗实线。
void drawBytes(byte date[],int offset,int length,int x,int y);
void drawChars(char date[],int offset,int length,int x,int y);
void drawString(String str,int x,int y);
以上3个方法提供输出文字的功能。
第1个方法输出字节数组,参数分别为字节数组、字节数组起始位置、x坐标和y坐标。
第2个方法输出字符数组,参数分别为字符数组、字符数组起始位置、x坐标和y坐标。
第3个方法输出字符串,参数分别为字符串、x坐标和y坐标。
下面举个例子来说明,此例在Applet中绘制了弧形、多角形和三维矩形,如代码15-8所示。
【代码15-8】 绘图示例
AppletUse.java文件如下。
import java.awt.*;
import java.Applet.*;
public class AppletUse extends Applet {
private int cx;
private int cy;
public void init() {
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
cx = d.width/2 ; cy = d.height/2;
}
//覆盖paint()方法
public void paint(Graphics g) {
//画填充弧形、椭圆形、矩形,多边形,3D矩形
g.setColor(Color.green);
g.fillArc(10, 10, 60, 40, 30, 60);
g.fillOval(10, 60, 60, 40);
g.fillRect(80, 10, 60, 40);
Polygon p = new Polygon();
p.addPoint(150, 10);
p.addPoint(210, 10);
p.addPoint(260, 50);
p.addPoint(220, 50);
p.addPoint(190, 70);
g.fillPolygon(p);
//画弧形和多边形
g.setColor(Color.red);
g.drawArc(80, 90, 100, 150, 270, 90);
int xPoint[]={100,150,170};
int yPoint[]={150,200,170};
g.drawPolygon(xPoint, yPoint, 3);
//绘制高度为5个像素,视角为45°正方向的3维矩形
g.setColor(Color.yellow);
g.fill3DRect(100, 300, 60, 40, true);
for (int i=1; i<=5; i++)
g.draw3DRect(100 + i, 300 - i, 60, 40, true);
//绘制高度为5个像素,视角为135°正方向的3维矩形
g.fill3DRect(100, 360, 60, 40, true);
for (int i=1; i<=5; i++)
g.draw3DRect(100 - i, 360 + i, 60, 40, true);
}
}
AppletUse.html文件如下。
<HTML>
<TITLE>Applet Use</TITLE>
<APPLET CODE="AppletUse.class" WIDTH=300 HEIGHT=450>
</APPLET>
</HTML> -
Java绘图: 使用 Graphics 类绘制线段、矩形、椭圆/圆弧/扇形、图片、文本
2017-02-19 15:10:26Graphics 类相当于一个画布,每个 Swing 组件都通过 Graphics 对象来绘制显示。绘图的原点位于组件的左上角,如下图所示: Graphics类中常用的绘制相关方法: ○ 参数 / 设置: // 创建...本文链接: https://blog.csdn.net/xietansheng/article/details/55669157
1. Graphics 绘图画布
Graphics 类相当于一个画布,每个 Swing 组件都通过 Graphics 对象来绘制显示。绘图的原点位于组件的左上角,如下图所示:
Graphics
类中常用的绘制相关方法:○ 参数 / 设置:
// 创建 Graphics 的副本 Graphics create() // 回收 Graphics void dispose() // 设置画笔颜色 void setColor(Color c) // 擦除某一区域(擦除后显示背景色) void clearRect(int x, int y, int width, int height)
1、线段 / 折线:
// 绘制一条线段(如果两点为同一点,则绘制点) void drawLine(int x1, int y1, int x2, int y2) // 根据给定的多个点坐标绘制折线 void drawPolyline(int xPoints[], int yPoints[], int nPoints)
2、矩形 / 多边形:
// 绘制一个矩形(空心) void drawRect(int x, int y, int width, int height) // 填充一个矩形(实心) void fillRect(int x, int y, int width, int height) // 绘制一个圆角矩形 void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) // 填充一个圆角矩形 void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) // 绘制一个3D矩形 void draw3DRect(int x, int y, int width, int height, boolean raised) // 填充一个3D矩形 void fill3DRect(int x, int y, int width, int height, boolean raised) // 根据给定的多个点坐标绘制一个多边形(首尾相连) void drawPolygon(int xPoints[], int yPoints[], int nPoints) // 根据给定的多个点坐标填充一个多边形(首尾相连) void fillPolygon(int xPoints[], int yPoints[], int nPoints)
3、圆弧 / 扇形:
// 绘制一个圆弧(弧线) void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) // 填充一个圆弧(扇形) void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
4、椭圆:
// 绘制一个椭圆 void drawOval(int x, int y, int width, int height) // 填充一个椭圆 void fillOval(int x, int y, int width, int height)
5、图片
/* * 先读取图片 */ // 方法一: 通过 java.awt.Toolkit 工具类来读取本地、网络 或 内存中 的 图片(支持 GIF、JPEG 或 PNG) Image image = Toolkit.getDefaultToolkit().getImage(String filename); Image image = Toolkit.getDefaultToolkit().getImage(URL url); Image image = Toolkit.getDefaultToolkit().createImage(byte[] imageData); // 方法二: 通过 javax.imageio.ImageIO 工具类读取本地、网络 或 内存中 的 图片(BufferedImage 继承自 Image) BufferedImage bufImage = ImageIO.read(File input); BufferedImage bufImage = ImageIO.read(URL input); BufferedImage bufImage = ImageIO.read(InputStream input); /* * PS_01: 图片宽高: BufferedImage 可以通过 bufImage.getWidth() 和 bufImage.getHeight() 方法直接获取图片的宽高; * Image 获取宽高需要另外传入一个 ImageObserver 参数。 * * PS_02: 图片裁剪: BufferedImage 通过 bufImage.getSubimage(int x, int y, int w, int h) 方法可以截取图片的 * 任意一部分,返回一个新的 BufferedImage 实例。 * * PS_03: 图片缩放: Image 通过 image.getScaledInstance(int width, int height, int hints) 方法可以对图片进行 * 缩放,返回新的一个 Image 实例。 */ // 绘制一张图片(所有组件类实现了 ImageObserver 接口,即组件实例即为 ImageObserver) boolean drawImage(Image image, int x, int y, int width, int height, ImageObserver observer)
6、文本
// 设置字体(字体、样式、大小) void setFont(Font font) // 绘制一段文本,其中 (x, y) 坐标指的是文本序列的 左下角 的位置 void drawString(String str, int x, int y)
2. Graphics2D
在 Swing 组件的实际绘制中通常使用的是 Graphics 的一个子类
Graphics2D
, 该类中提供了更为丰富的接口来绘制更为复杂的需求。Graphics2D
类中的部分方法:1、参数 / 设置
// 设置背景(擦除后显示该背景) void setBackground(Color color) // 设置笔画的轮廓特性(如画笔宽度、实线、虚线等) void setStroke(Stroke s)
2、绘制结果的变换
// 平移 void translate(int x, int y) // 旋转 void rotate(double theta, double originX, double originY) // 缩放 void scale(double sx, double sy) // 将图片经过指定变换后绘制显示 boolean drawImage(Image image, AffineTransform xform, ImageObserver obs)
3. 自定义组件, 绘图演示
package com.xiets.drawdemo; import javax.swing.*; import java.awt.*; public class Main { public static void main(String[] args) { /* * 在 AWT 的事件队列线程中创建窗口和组件, 确保线程安全, * 即 组件创建、绘制、事件响应 需要处于同一线程。 */ EventQueue.invokeLater(new Runnable() { @Override public void run() { // 创建窗口对象 MyFrame frame = new MyFrame(); // 显示窗口 frame.setVisible(true); } }); } /** * 窗口 */ public static class MyFrame extends JFrame { public static final String TITLE = "Java图形绘制"; public static final int WIDTH = 250; public static final int HEIGHT = 300; public MyFrame() { super(); initFrame(); } private void initFrame() { // 设置 窗口标题 和 窗口大小 setTitle(TITLE); setSize(WIDTH, HEIGHT); // 设置窗口关闭按钮的默认操作(点击关闭时退出进程) setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 把窗口位置设置到屏幕的中心 setLocationRelativeTo(null); // 设置窗口的内容面板 MyPanel panel = new MyPanel(this); setContentPane(panel); } } /** * 内容面板 */ public static class MyPanel extends JPanel { private MyFrame frame; public MyPanel(MyFrame frame) { super(); this.frame = frame; } /** * 绘制面板的内容: 创建 JPanel 后会调用一次该方法绘制内容, * 之后如果数据改变需要重新绘制, 可调用 updateUI() 方法触发 * 系统再次调用该方法绘制更新 JPanel 的内容。 */ @Override protected void paintComponent(Graphics g) { super.paintComponent(g); // 重新调用 Graphics 的绘制方法绘制时将自动擦除旧的内容 /* 自行打开下面注释查看各绘制效果 */ // 1. 线段 / 折线 drawLine(g); // 2. 矩形 / 多边形 // drawRect(g); // 3. 圆弧 / 扇形 // drawArc(g); // 4. 椭圆 // drawOval(g); // 5. 图片 // drawImage(g); // 6. 文本 // drawString(g); } /** * 1. 线段 / 折线 */ private void drawLine(Graphics g) { frame.setTitle("1. 线段 / 折线"); // 创建 Graphics 的副本, 需要改变 Graphics 的参数, // 这里必须使用副本, 避免影响到 Graphics 原有的设置 Graphics2D g2d = (Graphics2D) g.create(); // 抗锯齿 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 设置画笔颜色 g2d.setColor(Color.RED); // 1. 两点绘制线段: 点(20, 50), 点(200, 50) g2d.drawLine(50, 50, 200, 50); // 2. 多点绘制折线: 点(50, 100), 点(100, 130), 点(150, 70), 点(200, 100) int[] xPoints = new int[] { 50, 100, 150, 200 }; int[] yPoints = new int[] { 100, 120, 80, 100 }; int nPoints = 4; g2d.drawPolyline(xPoints, yPoints, nPoints); // 3. 两点绘制线段(设置线宽为5px): 点(50, 150), 点(200, 150) BasicStroke bs1 = new BasicStroke(5); // 笔画的轮廓(画笔宽度/线宽为5px) g2d.setStroke(bs1); g2d.drawLine(50, 150, 200, 150); // 4. 绘制虚线: 将虚线分为若干段( 实线段 和 空白段 都认为是一段), 实线段 和 空白段 交替绘制, // 绘制的每一段(包括 实线段 和 空白段)的 长度 从 dash 虚线模式数组中取值(从首 // 元素开始循环取值), 下面数组即表示每段长度分别为: 5px, 10px, 5px, 10px, ... float[] dash = new float[] { 5, 10 }; BasicStroke bs2 = new BasicStroke( 1, // 画笔宽度/线宽 BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f, dash, // 虚线模式数组 0.0f ); g2d.setStroke(bs2); g2d.drawLine(50, 200, 200, 200); // 自己创建的副本用完要销毁掉 g2d.dispose(); } /** * 2. 矩形 / 多边形 */ private void drawRect(Graphics g) { frame.setTitle("2. 矩形 / 多边形"); Graphics2D g2d = (Graphics2D) g.create(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.GRAY); // 1. 绘制一个矩形: 起点(30, 20), 宽80, 高100 g2d.drawRect(30, 20, 80, 100); // 2. 填充一个矩形 g2d.fillRect(140, 20, 80, 100); // 3. 绘制一个圆角矩形: 起点(30, 150), 宽80, 高100, 圆角宽30, 圆角高30 g2d.drawRoundRect(30, 150, 80, 100, 30, 30); // 4. 绘制一个多边形(收尾相连): 点(140, 150), 点(180, 250), 点(220, 200) int[] xPoints = new int[] { 140, 180, 220}; int[] yPoints = new int[] { 150, 250, 200}; int nPoints = 3; g2d.drawPolygon(xPoints, yPoints, nPoints); g2d.dispose(); } /** * 3. 圆弧 / 扇形 */ private void drawArc(Graphics g) { frame.setTitle("3. 圆弧 / 扇形"); Graphics2D g2d = (Graphics2D) g.create(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.RED); // 1. 绘制一条圆弧: 椭圆的外切矩形 左上角坐标为(0, 0), 宽100, 高100, // 弧的开始角度为0度, 需要绘制的角度数为-90度, // 椭圆右边水平线为0度, 逆时针为正角度, 顺时针为负角度 g2d.drawArc(0, 0, 100, 100, 0, -90); // 2. 绘制一个圆: 圆的外切矩形 左上角坐标为(120, 20), 宽高为100 g2d.drawArc(120, 20, 100, 100, 0, 360); g2d.setColor(Color.GRAY); // 3. 填充一个扇形 g2d.fillArc(80, 150, 100, 100, 90, 270); g2d.dispose(); } /** * 4. 椭圆 (实际上通过绘制360度的圆弧/扇形也能达到绘制圆/椭圆的效果) */ private void drawOval(Graphics g) { frame.setTitle("4. 椭圆"); Graphics2D g2d = (Graphics2D) g.create(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.RED); // 1. 绘制一个圆: 圆的外切矩形 左上角坐标为(0, 0), 宽高为100 g2d.drawOval(0, 0, 100, 100); g2d.setColor(Color.GRAY); // 2. 填充一个椭圆 g2d.fillOval(120, 100, 100, 150); g2d.dispose(); } /** * 5. 图片 */ private void drawImage(Graphics g) { frame.setTitle("5. 图片"); Graphics2D g2d = (Graphics2D) g.create(); // 从本地读取一张图片 String filepath = "demo.jpg"; Image image = Toolkit.getDefaultToolkit().getImage(filepath); // 绘制图片(如果宽高传的不是图片原本的宽高, 则图片将会适当缩放绘制) g2d.drawImage(image, 50, 50, image.getWidth(this), image.getHeight(this), this); g2d.dispose(); } /** * 6. 文本 */ private void drawString(Graphics g) { frame.setTitle("6. 文本"); Graphics2D g2d = (Graphics2D) g.create(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 设置字体样式, null 表示使用默认字体, Font.PLAIN 为普通样式, 大小为 25px g2d.setFont(new Font(null, Font.PLAIN, 25)); // 绘制文本, 其中坐标参数指的是文本绘制后的 左下角 的位置 // 首次绘制需要初始化字体, 可能需要较耗时 g2d.drawString("Hello World!", 20, 60); g2d.drawString("你好, 世界!", 20, 120); g2d.dispose(); } } }
结果展示:
4. 把组件上绘制的内容保存为图片
// import javax.imageio.ImageIO; // import java.awt.image.BufferedImage; // 获取到需要保存内容的组件(面板) JPanel panel = (JPanel) frame.getContentPane(); // 创建一个与面板等宽高的缓存图片 BufferedImage image = new BufferedImage( panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_ARGB ); // 获取缓存图片的画布 Graphics2D g2d = image.createGraphics(); // 把面板的内容画到画布中 panel.paint(g2d); try { // 把缓存图片保存到本地文件 ImageIO.write(image, "png", new File("panel.png")); } catch (Exception e) { e.printStackTrace(); }
扩展: Java图片操作 — 图片的读取、绘制、缩放、裁剪、保存
-
java Graphics/Graphics2D
2016-11-24 12:27:26java 用Graphics/Graphics2D添加文字水印的时候都很慢这是为什么呢? -
Graphics2D
2016-11-16 22:50:41java.awt 类 Graphics2D java.lang.Object java.awt.Graphics java.awt.Graphics2D ...public abstract class ...此 Graphics2D 类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为java.awt
类 Graphics2Djava.lang.Object java.awt.Graphics java.awt.Graphics2D
public abstract class Graphics2D
extends Graphics此
Graphics2D
类扩展 Graphics 类,以提供对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。它是用于在 Java(tm) 平台上呈现二维形状、文本和图像的基础类。坐标空间
所有传递到Graphics2D
对象的坐标都在一个与设备无关并且名为用户空间的坐标系中指定,用户空间由应用程序使用。Graphics2D
对象包含一个 AffineTransform 对象作为其呈现状态的一部分,后者定义了如何将坐标从用户空间转换到设备空间中与设备有关的坐标。设备空间中的坐标通常是指单个设备像素,并根据这些像素之间无限小的间距对齐。某些
Graphics2D
对象可用于捕获对存储器的呈现操作并存入图形元文件,以后可在未知物理分辨率的具体设备上重放。由于在捕获呈现操作时分辨率可能未知,所以Graphics2D
Transform
的设置可将用户坐标转换为虚拟设备空间,该设备空间与目标设备的预期分辨率接近。如果估计值不正确,则在重放时可能需要进一步转换。某些由呈现属性对象执行的操作发生在设备空间中,但所有
Graphics2D
方法都采用用户空间坐标。每个
Graphics2D
对象都与一个定义呈现位置的目标关联。GraphicsConfiguration 对象定义呈现目标的特征,如像素格式和分辨率。在Graphics2D
对象的整个生命周期中都使用相同的呈现目标。创建
Graphics2D
对象时,GraphicsConfiguration
将为Graphics2D
的目标(Component 或 Image)指定默认转换,此默认转换将用户空间坐标系映射到屏幕和打印机设备坐标,使原点映射到设备目标区域的左上角,并将 X 坐标轴向右方延伸,将 Y 坐标轴向下方延伸。对于接近 72 dpi 的设备(例如屏幕设备),默认转换的缩放比例设置为 1:1。对于高分辨率设备(例如打印机),默认转换的缩放比例设置为每平方英寸大约 72 个用户空间坐标。对于图像缓冲区,默认转换为Identity
转换。呈现过程
呈现过程可以分为四个阶段,这四个阶段由Graphics2D
呈现属性控制。呈现器可以优化当中的许多步骤:可以缓存结果以用于未来调用;可以将多个虚拟步骤合成一个操作;可以将多种属性识别为共用的简单情况(可以通过修改操作的其他部分来消除各种属性间的差别)。呈现过程中的步骤有:
- 确定呈现内容。
- 将呈现操作限制在当前
Clip
。Clip
由用户空间中的 Shape 指定,由使用Graphics
和Graphics2D
中各种 clip 操作方法的程序控制。此用户剪贴区 由当前Transform
转换到设备空间中,并与设备剪贴区 合并,后者是通过窗口可见性和设备范围定义的。用户剪贴区和设备剪贴区的组合定义复合剪贴区,复合剪贴区确定最终的剪贴区域。呈现系统不能修改用户剪贴区来反映得到的复合剪贴区。 - 确定呈现的颜色。
- 使用
Graphics2D
上下文中当前的 Composite 属性将颜色应用于目标绘图面。
三种类型的呈现操作,以及各自特殊呈现过程的细节如下:- Shape 操作
- 如果该操作为
draw(Shape)
操作,则Graphics2D
上下文中当前 Stroke 属性上的 createStrokedShape 方法将用于构造包含指定Shape
轮廓的新Shape
对象。 - 使用
Graphics2D
上下文中的当前Transform
将Shape
从用户空间转换到设备空间。 Shape
的轮廓是通过使用Shape
的 getPathIterator 方法提取的,该方法返回一个沿着Shape
边界迭代得到的 PathIterator 对象。- 如果
Graphics2D
对象无法处理PathIterator
对象返回的曲线段,则可以调用Shape
的 getPathIterator 替代方法,该方法可使Shape
变得平滑。 - 对于 PaintContext,需要
Graphics2D
上下文中的当前 Paint,它指定了在设备空间中呈现的颜色。
- 如果该操作为
- 文本操作
- 以下步骤用于确定呈现指定
String
所需的字形集:- 如果参数是
String
,则要求Graphics2D
上下文中的当前Font
将String
中的 Unicode 字符转换为一个字形集,以表现 Font 实现的基本布局和成形算法。 - 如果参数是 AttributedCharacterIterator,则要求迭代器使用其内嵌的字体属性将其自身转换为 TextLayout。
TextLayout
实现更为复杂的字形布局算法,用于为不同书写方向的多种字体自动执行 Unicode 双方向布局调整。 - 如果参数是 GlyphVector,则
GlyphVector
对象已经包含了特定于字体的合适字形代码和每个字形位置的显式坐标。
- 如果参数是
- 查询当前的
Font
以获取指定字形的轮廓。这些轮廓被视为用户空间中相对于步骤 1 中确定的每个字形位置的形状。 - 字符轮廓按上面 Shape 操作下指示的方式填充。
- 查询当前
PaintContext
以获取Paint
,Paint 指定了设备空间中呈现的颜色。
- 以下步骤用于确定呈现指定
- Image 操作
- 感兴趣区域由源
Image
的边界框定义。此边界框在图像空间中指定,该空间即Image
对象的本地坐标系。 - 如果
AffineTransform
被传递到 drawImage(Image, AffineTransform, ImageObserver),则使用AffineTransform
将边界框从图像空间转换到用户空间。如果未提供AffineTransform
,则认为边界框已存在于用户空间中。 - 使用当前
Transform
将Image
的边界框从用户空间转换到设备空间。注意,转换边界框的结果不一定会得到设备空间中的矩形区域。 Image
对象确定要呈现的颜色,并根据当前Transform
和可选图像转换所指定的源到目标坐标映射关系进行采样。
- 感兴趣区域由源
默认呈现属性
Graphics2D
呈现属性的默认值有:-
Paint
Component
的颜色。Font
Component
的Font
。Stroke
- 线宽为 1 的方形画笔,没有虚线、斜角线段接合和方形端点。
Transform
- 用于
Component
的GraphicsConfiguration
的 getDefaultTransform。 Composite
- AlphaComposite.SRC_OVER 规则。
Clip
- 不呈现
Clip
,输出局限于Component
。
呈现兼容性问题
JDK(tm) 1.1 呈现模型是基于像素化的模型,该模型的坐标无限细分,且位于像素之间。使用一个一像素宽的画笔执行绘制操作,填充路径锚点向下和向右的像素。JDK 1.1 呈现模型与大多数现有平台呈现类的功能一致,需要将整数坐标解析为离散的画笔,使其完全落在指定的像素成员上。Java 2D(tm)(Java(tm) 2 平台)API 支持抗锯齿呈现器。一像素宽的画笔不需要完全落在像素 N 或像素 N+1 上。该画笔可以部分落在这两个像素上。不需要为宽画笔选择一个偏离方向,因为沿画笔遍历边缘发生的混合可让画笔的子像素位置对用户可见。另一方面,如果通过将 KEY_ANTIALIASING 提示键设置为 VALUE_ANTIALIAS_OFF 提示值而关闭了抗锯齿,则当画笔跨在像素边界上时,呈现器可能需要应用偏离来确定要修改哪个像素,例如在设备空间中,当画笔沿着整数坐标绘制时。虽然抗锯齿呈现器的功能使之不再需要呈现模型为画笔指定一个偏离,但对于在屏幕上绘制一像素宽的水平线和垂直线这种常见情形,还是需要抗锯齿和非抗锯齿呈现器执行类似的操作。为了确保通过将 KEY_ANTIALIASING 提示键设置为 VALUE_ANTIALIAS_ON 而打开的抗锯齿不会导致这些线突然变为此宽度的二倍或一半不透明,需要让该模型为这些线指定一个路径,使它们完全覆盖特定的像素集,以帮助提高其平滑性。
Java 2D API 维持与 JDK 1.1 呈现行为的兼容性,遗留操作和现有呈现器行为在 Java 2D API 下没有改变。定义了映射到常规
draw
和fill
方法的遗留方法,它明确指示Graphics2D
根据Stroke
和Transform
属性以及呈现提示的设置扩展Graphics
的方式。在默认属性设置下该定义的执行方式完全相同。例如,默认Stroke
是一个宽度为 1 且没有虚线的BasicStroke
,屏幕绘制的默认 Transform 是 Identity 转换。下面两个规则提供了可预见的呈现行为(无论是否使用了重叠还是抗锯齿)。
- 将设备坐标定义为在设备像素之间,这避免了重叠呈现和抗锯齿呈现的结果不一致。如果将坐标定义为在像素的中心,则由矩形等形状覆盖的某些像素仅是半覆盖。通过重叠的呈现,半覆盖的像素可能呈现在形状内部,也可能呈现在形状外部。使用抗锯齿呈现,整个形状边缘上的像素都是半覆盖的。另一方面,由于坐标被定义在像素之间,所以无论是否使用抗锯齿进行呈现,像矩形这样的形状将不会有半覆盖像素。
- 使用
BasicStroke
对象勾画的线和路径可以“标准化”,从而在不同的可绘制点上定位时,无论使用重叠还是抗锯齿呈现进行的绘制都能提供一致的轮廓呈现。此标准化过程通过 KEY_STROKE_CONTROL 提示控制。虽然未指定准确的标准化算法,但此标准化的目标是为了确保可以使用一致的可视外观呈现线条,而不考虑它们在像素网格上的位置;另一个目的是促进以抗锯齿模式呈现更连续的水平和垂直线,从而与没有抗锯齿的线更为相似。典型的标准化步骤可以将抗锯齿线端点提升到像素中心,以减少混合量;也可以调整无抗锯齿线的子像素位置,以便浮点线宽度舍入为近似相等的偶数或奇数像素计数。此过程可以将端点向上移动半个像素(通常沿两个坐标轴的正无穷大方向移动),以得到一致的结果。
在默认属性设置下,以下定义的常规遗留方法与以前指定行为的执行方式完全相同:
- 对于
fill
操作,包括fillRect
、fillRoundRect
、fillOval
、fillArc
、fillPolygon
和clearRect
,现在可以使用所需的Shape
调用 fill。例如,在填充矩形时可调用:fill(new Rectangle(x, y, w, h));
- 类似地,对于绘制操作,包括
drawLine
、drawRect
、drawRoundRect
、drawOval
、drawArc
、drawPolyline
和drawPolygon
,现在可以使用所需的Shape
调用 draw。例如,在绘制矩形时可调用:draw(new Rectangle(x, y, w, h));
draw3DRect
和fill3DRect
方法是根据Graphics
类中的drawLine
和fillRect
方法实现的,根据Graphics2D
上下文中的当前Stroke
和Paint
对象可以预知其行为。此类重写了那些独占地使用当前Color
的实现,重写当前Paint
以及使用fillRect
的Paint
,以描述与以前存在的方法完全相同的行为,而不考虑当前Stroke
的设置。
Graphics
类仅定义了setColor
方法来控制要绘制的颜色。由于 Java 2D API 扩展了Color
对象来实现新的Paint
接口,因此现有的setColor
方法现在是将当前Paint
属性设置为Color
对象的便捷方法。setColor(c)
等同于setPaint(c)
。Graphics
类定义了两种方法来控制如何将颜色应用到目标。setPaintMode
方法实现为设置默认Composite
的便捷方法,它等同于setComposite(new AlphaComposite.SrcOver)
。setXORMode(Color xorcolor)
方法实现为设置特殊Composite
对象的便捷方法,它忽略源颜色的Alpha
分量,并将目标颜色设置为以下值:dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
- 另请参见:
- RenderingHints
构造方法摘要 protected
Graphics2D()
构建一个新的Graphics2D
对象。方法摘要 abstract void
addRenderingHints(Map<?,?> hints)
为呈现算法设置任意数量的首选项值。abstract void
clip(Shape s)
将当前Clip
与指定Shape
的内部区域相交,并将Clip
设置为所得的交集。abstract void
draw(Shape s)
使用当前Graphics2D
上下文的设置勾画Shape
的轮廓。void
draw3DRect(int x, int y, int width, int height, boolean raised)
绘制指定矩形的 3-D 高亮显示边框。abstract void
drawGlyphVector(GlyphVector g, float x, float y)
使用Graphics2D
上下文的呈现属性,呈现指定 GlyphVector 的文本。abstract void
drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
呈现使用 BufferedImageOp 过滤的BufferedImage
。abstract boolean
drawImage(Image img, AffineTransform xform, ImageObserver obs)
呈现一个图像,在绘制前进行从图像空间到用户空间的转换。abstract void
drawRenderableImage(RenderableImage img, AffineTransform xform)
呈现 RenderableImage,在绘制前进行从图像空间到用户空间的转换。abstract void
drawRenderedImage(RenderedImage img, AffineTransform xform)
呈现 RenderedImage,在绘制前进行从图像空间到用户空间的转换。abstract void
drawString(AttributedCharacterIterator iterator, float x, float y)
依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。abstract void
drawString(AttributedCharacterIterator iterator, int x, int y)
依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。abstract void
drawString(String str, float x, float y)
使用Graphics2D
上下文中当前文本属性状态呈现由指定String
指定的文本。abstract void
drawString(String str, int x, int y)
使用Graphics2D
上下文中的当前文本属性状态呈现指定的String
的文本。abstract void
fill(Shape s)
使用Graphics2D
上下文的设置,填充Shape
的内部区域。void
fill3DRect(int x, int y, int width, int height, boolean raised)
绘制一个用当前颜色填充的 3-D 高亮显示矩形。abstract Color
getBackground()
返回用于清除区域的背景色。abstract Composite
getComposite()
返回Graphics2D
上下文中的当前Composite
abstract GraphicsConfiguration
getDeviceConfiguration()
返回与此Graphics2D
关联的设备配置。abstract FontRenderContext
getFontRenderContext()
获取此Graphics2D
上下文中Font
的呈现上下文。abstract Paint
getPaint()
返回Graphics2D
上下文中的当前Paint
abstract Object
getRenderingHint(RenderingHints.Key hintKey)
返回呈现算法的单个首选项的值。abstract RenderingHints
getRenderingHints()
获取呈现算法的首选项。abstract Stroke
getStroke()
返回Graphics2D
上下文中的当前Stroke
abstract AffineTransform
getTransform()
返回Graphics2D
上下文中当前Transform
的副本。abstract boolean
hit(Rectangle rect, Shape s, boolean onStroke)
检查指定的Shape
是否与设备空间中的指定 Rectangle 相交。abstract void
rotate(double theta)
将当前的Graphics2D
Transform
与旋转转换连接。abstract void
rotate(double theta, double x, double y)
将当前的Graphics2D
Transform
与平移后的旋转转换连接。abstract void
scale(double sx, double sy)
将当前Graphics2D
Transform
与缩放转换连接。abstract void
setBackground(Color color)
设置Graphics2D
上下文的背景色。abstract void
setComposite(Composite comp)
为Graphics2D
上下文设置Composite
。abstract void
setPaint(Paint paint)
为Graphics2D
上下文设置Paint
属性。abstract void
setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
为呈现算法设置单个首选项的值。abstract void
setRenderingHints(Map<?,?> hints)
使用指定的hints
替换用于所有呈现算法首选项的值。abstract void
setStroke(Stroke s)
为Graphics2D
上下文设置Stroke
abstract void
setTransform(AffineTransform Tx)
重写Graphics2D
上下文中的 Transform。abstract void
shear(double shx, double shy)
将当前Graphics2D
Transform
与剪裁转换连接。abstract void
transform(AffineTransform Tx)
根据“最后指定首先应用”规则,使用此Graphics2D
中的Transform
组合AffineTransform
对象。abstract void
translate(double tx, double ty)
将当前Graphics2D
Transform
与平移转换连接。abstract void
translate(int x, int y)
将Graphics2D
上下文的原点平移到当前坐标系中的点 (x, y)。从类 java.awt.Graphics 继承的方法 clearRect, clipRect, copyArea, create, create, dispose, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString
从类 java.lang.Object 继承的方法 clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
构造方法详细信息 Graphics2D
protected Graphics2D()
-
构建一个新的
Graphics2D
对象。由于Graphics2D
是一个抽象类,而且它必须由不同输出设备的子类定制,所以无法直接创建Graphics2D
对象。相反,Graphics2D
对象必须从另一个Graphics2D
对象获得、由某个Component
创建,或者从 BufferedImage 之类的图像对象获得。- 另请参见:
- Component.getGraphics(), Graphics.create()
方法详细信息 draw3DRect
public void draw3DRect(int x, int y, int width, int height, boolean raised)
-
绘制指定矩形的 3-D 高亮显示边框。矩形的边是高亮显示的,以至于从左上角看呈斜面并加亮。
高亮显示效果所用的颜色根据当前颜色确定。得到的矩形覆盖的区域为
width + 1
像素宽乘以height + 1
像素高。此方法独占使用当前Color
,并忽略当前Paint
-
- 覆盖:
- 类
Graphics
中的draw3DRect
-
- 参数:
x
- 要绘制矩形的 x 坐标。y
- 要绘制矩形的 y 坐标。width
- 要绘制矩形的宽度。height
- 要绘制矩形的高度。raised
- 一个用于确定矩形是凸出平面显示还是凹入平面显示的 boolean 值。- 另请参见:
- Graphics.fill3DRect(int, int, int, int, boolean)
fill3DRect
public void fill3DRect(int x, int y, int width, int height, boolean raised)
-
绘制一个用当前颜色填充的 3-D 高亮显示矩形。矩形的边是高亮显示的,以至于从左上角看呈斜面并加亮。高亮显示效果和填充所用的颜色根据当前
Color
确定。此方法独占使用当前Color
,并忽略当前Paint
-
- 覆盖:
- 类
Graphics
中的fill3DRect
-
- 参数:
x
- 要填充矩形的 x 坐标。y
- 要填充矩形的 y 坐标。width
- 要填充矩形的宽度。height
- 要填充矩形的高度。raised
- 一个用于确定矩形是凸出平面显示还是凹入平面显示的 boolean 值。- 另请参见:
- Graphics.draw3DRect(int, int, int, int, boolean)
draw
public abstract void draw(Shape s)
-
使用当前
Graphics2D
上下文的设置勾画Shape
的轮廓。应用的呈现属性包括Clip
、Transform
、Paint
、Composite
和Stroke
属性。 -
- 参数:
s
- 要呈现的Shape
- 另请参见:
- setStroke(java.awt.Stroke), setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), setComposite(java.awt.Composite)
drawImage
public abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs)
-
呈现一个图像,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用
Graphics2D
中的当前Transform
完成。在应用Graphics2D
上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括Clip
、Transform
和Composite
属性。注意,如果指定的转换不可逆,则不会完成呈现。 -
- 参数:
img
- 要呈现的指定图像。如果img
为 null,则此方法不执行任何动作。xform
- 从图像空间到用户空间的转换obs
- 转换了多个Image
时要通知的 ImageObserver- 返回:
- 如果
Image
被完全加载并完全呈现,则为true
,否则为 null;如果仍在加载Image
,则为false
- 另请参见:
- transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
drawImage
public abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
-
呈现使用 BufferedImageOp 过滤的
BufferedImage
。 应用的呈现属性包括Clip
、Transform
和Composite
属性。这等价于:img1 = op.filter(img, null); drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);
-
- 参数:
op
- 在呈现之前要应用到图像的过滤器img
- 要呈现的指定BufferedImage
。 如果img
为 null,则此方法不执行任何动作。x
- 用户空间中呈现该图像左上角位置的 x 坐标y
- 用户空间中呈现该图像左上角位置的 y 坐标- 另请参见:
- transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
drawRenderedImage
public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
-
呈现 RenderedImage,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用
Graphics2D
中的当前Transform
完成。在应用Graphics2D
上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括Clip
、Transform
和Composite
属性。注意,如果指定的转换不可逆,则不会完成呈现。 -
- 参数:
img
- 要呈现的图像。如果img
为 null,则此方法不执行任何操作。xform
- 从图像空间到用户空间的转换- 另请参见:
- transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
drawRenderableImage
public abstract void drawRenderableImage(RenderableImage img, AffineTransform xform)
-
呈现 RenderableImage,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用
Graphics2D
中当前的Transform
完成。在应用Graphics2D
上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括Clip
、Transform
和Composite
属性。注意,如果指定的转换不可逆,则不会完成呈现。呈现
RenderableImage
时,可以使用在Graphics2D
对象上设置的呈现提示。如果由特定RenderableImage
识别的特定提示需要显式控制,或者需要知道使用哪一个提示,则应直接从RenderableImage
获取RenderedImage
,并使用 drawRenderedImage 呈现它。 -
- 参数:
img
- 要呈现的图像。如果img
为 null,则此方法不执行任何操作。xform
- 从图像空间到用户空间的转换- 另请参见:
- transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)
drawString
public abstract void drawString(String str, int x, int y)
-
使用
Graphics2D
上下文中的当前文本属性状态呈现指定的String
的文本。首字符的基线位于用户空间的 (x, y) 位置处。应用的呈现属性包括Clip
、Transform
、Paint
、Font
和Composite
属性。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。 -
- 指定者:
- 类
Graphics
中的drawString
-
- 参数:
str
- 要呈现的字符串x
- 呈现String
位置的 x 坐标y
- 呈现String
位置的 y 坐标- 抛出:
NullPointerException
- 如果str
为null
- 从以下版本开始:
- JDK1.0
- 另请参见:
- Graphics.drawBytes(byte[], int, int, int, int), Graphics.drawChars(char[], int, int, int, int)
drawString
public abstract void drawString(String str, float x, float y)
-
使用
Graphics2D
上下文中当前文本属性状态呈现由指定String
指定的文本。首字符的基线位于用户空间中的 (x, y) 位置处。应用的呈现属性包括Clip
、Transform
、Paint
、Font
和Composite
属性。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。 -
- 参数:
str
- 要呈现的String
x
- 呈现String
位置的 x 坐标y
- 呈现String
位置的 y 坐标- 抛出:
NullPointerException
- 如果str
为null
- 另请参见:
- setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), Graphics.setFont(java.awt.Font), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)
drawString
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
-
依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。
首字符的基线位于用户空间中的 (x, y) 位置处。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。
-
- 指定者:
- 类
Graphics
中的drawString
-
- 参数:
iterator
- 要呈现其文本的迭代器x
- 要呈现迭代器文本处的 x 坐标y
- 要呈现迭代器文本处的 y 坐标- 抛出:
NullPointerException
- 如果iterator
为null
- 另请参见:
- setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)
drawString
public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
-
依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。
首字符的基线位于用户空间中的 (x, y) 位置处。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。
-
- 参数:
iterator
- 要呈现其文本的迭代器x
- 要呈现迭代器文本处的 x 坐标y
- 要呈现迭代器文本处的 y 坐标- 抛出:
NullPointerException
- 如果iterator
为null
- 另请参见:
- setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)
drawGlyphVector
public abstract void drawGlyphVector(GlyphVector g, float x, float y)
-
使用
Graphics2D
上下文的呈现属性,呈现指定 GlyphVector 的文本。应用的呈现属性包括Clip
、Transform
、Paint
和Composite
属性。GlyphVector
指定来自一个 Font 的各个字形。GlyphVector
还可以包含字形位置。这是将一组字符呈现到屏幕的最快方式。 -
- 参数:
g
- 要呈现的GlyphVector
x
- 字形呈现用户空间中的 x 位置y
- 字形呈现用户空间中的 y 位置- 抛出:
NullPointerException
- 如果g
为null
。- 另请参见:
- Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String), GlyphVector, setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)
fill
public abstract void fill(Shape s)
-
使用
Graphics2D
上下文的设置,填充Shape
的内部区域。应用的呈现属性包括Clip
、Transform
、Paint
和Composite
属性。 -
- 参数:
s
- 要填充的Shape
- 另请参见:
- setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
hit
public abstract boolean hit(Rectangle rect, Shape s, boolean onStroke)
-
检查指定的
Shape
是否与设备空间中的指定 Rectangle 相交。如果onStroke
为 false,则此方法会检查指定Shape
的内部区域是否与指定的Rectangle
相交。如果onStroke
为true
,则此方法会检查指定Shape
轮廓的Stroke
是否与指定的Rectangle
相交。可应用的呈现属性包括Clip
、Transform
和Stroke
属性。 -
- 参数:
rect
- 检查设备空间中是否相交的区域s
- 检查是否相交的Shape
onStroke
- 用于在测试中选择笔划或填充图形的标志。如果该标志为true
,则测试Stroke
轮廓。如果该标志为false
,则测试填充的Shape
。- 返回:
- 如果存在相交,则返回
true
;否则返回false
- 另请参见:
- setStroke(java.awt.Stroke), fill(java.awt.Shape), draw(java.awt.Shape), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
getDeviceConfiguration
public abstract GraphicsConfiguration getDeviceConfiguration()
-
返回与此
Graphics2D
关联的设备配置。 -
- 返回:
- 此
Graphics2D
的设备配置。
setComposite
public abstract void setComposite(Composite comp)
-
为
Graphics2D
上下文设置Composite
。Composite
用于所有绘制方法中,如drawImage
、drawString
、draw
和fill
。 它指定新的像素如何在呈现过程中与图形设备上的现有像素组合。如果此
Graphics2D
上下文正在向显示屏幕绘制Component
,并且Composite
是自定义对象,而不是AlphaComposite
类的实例,那么如果有安全管理器,就可以使用AWTPermission("readDisplayPixels")
权限调用其checkPermission
方法。 -
- 参数:
comp
- 用于呈现的Composite
对象- 抛出:
SecurityException
- 如果自定义的Composite
对象被用于呈现到屏幕,并设置了安全管理器,且其checkPermission
方法不允许该操作。- 另请参见:
- Graphics.setXORMode(java.awt.Color), Graphics.setPaintMode(), getComposite(), AlphaComposite, SecurityManager.checkPermission(java.security.Permission), AWTPermission
setPaint
public abstract void setPaint(Paint paint)
-
为
Graphics2D
上下文设置Paint
属性。使用为null
的Paint
对象调用此方法对此Graphics2D
的当前Paint
属性没有任何影响。 -
- 参数:
paint
- 呈现过程中用于生成颜色的Paint
对象;或者为null
- 另请参见:
- Graphics.setColor(java.awt.Color), getPaint(), GradientPaint, TexturePaint
setStroke
public abstract void setStroke(Stroke s)
-
为
Graphics2D
上下文设置Stroke
-
- 参数:
s
- 呈现过程中用于勾画Shape
的Stroke
对象- 另请参见:
- BasicStroke, getStroke()
setRenderingHint
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
-
为呈现算法设置单个首选项的值。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考
RenderingHints
类。 -
- 参数:
hintKey
- 要设置提示的键。hintValue
- 指示指定提示类别首选项的值。- 另请参见:
- getRenderingHint(RenderingHints.Key), RenderingHints
getRenderingHint
public abstract Object getRenderingHint(RenderingHints.Key hintKey)
-
返回呈现算法的单个首选项的值。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考
RenderingHints
类。 -
- 参数:
hintKey
- 与要获得的提示对应的键。- 返回:
- 表示指定提示键的值的对象。一些键及其关联值在
RenderingHints
类中定义。 - 另请参见:
- RenderingHints, setRenderingHint(RenderingHints.Key, Object)
setRenderingHints
public abstract void setRenderingHints(Map<?,?> hints)
-
使用指定的
hints
替换用于所有呈现算法首选项的值。丢弃所有呈现提示的现有值,并从指定的 Map 对象初始化一组新的已知提示和值。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考RenderingHints
类。 -
- 参数:
hints
- 要设置的呈现提示- 另请参见:
- getRenderingHints(), RenderingHints
addRenderingHints
public abstract void addRenderingHints(Map<?,?> hints)
-
为呈现算法设置任意数量的首选项值。仅修改在指定
Map
对象中存在的呈现提示值。所有指定对象中不存在的其它首选项不做修改。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。有关常用键和值的定义,请参考RenderingHints
类。 -
- 参数:
hints
- 要设置的呈现提示- 另请参见:
- RenderingHints
getRenderingHints
public abstract RenderingHints getRenderingHints()
-
获取呈现算法的首选项。提示类别包括对呈现过程中的呈现质量和总时间/质量折衷的控制。返回所有在一次操作中指定的提示键/值对。有关常用键和值的定义,请参考
RenderingHints
类。 -
- 返回:
- 包含对当前首选项的
RenderingHints
实例的引用。 - 另请参见:
- RenderingHints, setRenderingHints(Map)
translate
public abstract void translate(int x, int y)
-
将
Graphics2D
上下文的原点平移到当前坐标系中的点 (x, y)。修改Graphics2D
上下文,使其新的原点对应于此Graphics2D
上下文原坐标系中的点 (x, y)。在此图形上下文上执行的后续呈现操作使用的所有坐标均相对于这个新原点。 -
- 指定者:
- 类
Graphics
中的translate
-
- 参数:
x
- 指定的 x 坐标y
- 指定的 y 坐标- 从以下版本开始:
- JDK1.0
translate
public abstract void translate(double tx, double ty)
-
将当前
Graphics2D
Transform
与平移转换连接。后续呈现相对于前一位置平移指定的距离。这等同于调用 transform(T),其中 T 为以下矩阵表示的AffineTransform
:[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
-
- 参数:
tx
- 沿 x 轴平移的距离ty
- 沿 y 轴平移的距离
rotate
public abstract void rotate(double theta)
-
将当前的
Graphics2D
Transform
与旋转转换连接。后续呈现相对于前一原点旋转指定弧度。这等同于调用transform(R)
,其中 R 为以下矩阵表示的AffineTransform
:[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]
使用正角度 theta 进行旋转,可将正 x 轴上的点转向正 y 轴。 -
- 参数:
theta
- 旋转的角度,以弧度为单位
rotate
public abstract void rotate(double theta, double x, double y)
-
将当前的
Graphics2D
Transform
与平移后的旋转转换连接。后续呈现的变换如下:平移到指定位置,旋转指定弧度,然后向回平移相同的距离。这等同于以下调用序列:translate(x, y); rotate(theta); translate(-x, -y);
使用正角度 theta 进行旋转,可将正 x 轴上的点转向正 y 轴。 -
- 参数:
theta
- 旋转的角度,以弧度为单位x
- 旋转原点的 x 坐标y
- 旋转原点的 y 坐标
scale
public abstract void scale(double sx, double sy)
-
将当前
Graphics2D
Transform
与缩放转换连接。后续呈现相对于以前的缩放比例根据指定的缩放系数来重新调整大小。这等同于调用transform(S)
,其中 S 为以下矩阵表示的AffineTransform
:[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]
-
- 参数:
sx
- 相对于以前的呈现操作,后续呈现操作中的与 X 坐标相乘的量。sy
- 相对于以前的呈现操作,后续呈现操作中的与 Y 坐标相乘的量。
shear
public abstract void shear(double shx, double shy)
-
将当前
Graphics2D
Transform
与剪裁转换连接。后续呈现相对于以前的位置由指定的乘式剪裁。这等同于调用transform(SH)
,其中 SH 为以下矩阵表示的AffineTransform
:[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]
-
- 参数:
shx
- 在正 X 轴方向移动坐标的乘数,它可以作为其 Y 坐标的函数shy
- 在正 Y 轴方向移动坐标的乘数,它可以作为其 X 坐标的函数
transform
public abstract void transform(AffineTransform Tx)
-
根据“最后指定首先应用”规则,使用此
Graphics2D
中的Transform
组合AffineTransform
对象。如果当前Transform
为 Cx,那么使用 Tx 进行组合的结果为新的Transform
Cx'。Cx' 成为此Graphics2D
的当前Transform
。通过更新的Transform
Cx' 转换点 p 等同于首先通过 Tx 转换点 p,然后通过原来的Transform
Cx 转换所得结果。换句话说,Cx'(p) = Cx(Tx(p))。如有必要,可以生成 Tx 的副本,从而对 Tx 进行进一步修改时不会影响呈现。 -
- 参数:
Tx
- 要与当前Transform
组合的AffineTransform
对象- 另请参见:
- setTransform(java.awt.geom.AffineTransform), AffineTransform
setTransform
public abstract void setTransform(AffineTransform Tx)
-
重写
Graphics2D
上下文中的 Transform。警告:切勿使用此方法在现有转换之上应用新的坐标转换,因为Graphics2D
可能已经有用于其它用途(例如,呈现 Swing 组件或应用缩放转换以调整打印机的分辨率)的转换。要添加坐标转换,请使用
transform
、rotate
、scale
或shear
方法。setTransform
方法只用于呈现后恢复原始Graphics2D
的转换,如以下示例所示:// Get the current transform AffineTransform saveAT = g2.getTransform(); // Perform transformation g2d.transform(...); // Render g2d.draw(...); // Restore original transform g2d.setTransform(saveAT);
-
- 参数:
Tx
- 从getTransform
方法检索的AffineTransform
- 另请参见:
- transform(java.awt.geom.AffineTransform), getTransform(), AffineTransform
getTransform
public abstract AffineTransform getTransform()
-
返回
Graphics2D
上下文中当前Transform
的副本。 -
- 返回:
Graphics2D
上下文中的当前AffineTransform
- 另请参见:
- transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform)
getPaint
public abstract Paint getPaint()
-
返回
Graphics2D
上下文中的当前Paint
-
- 返回:
- 当前
Graphics2D
Paint
,它定义一种颜色或模式。 - 另请参见:
- setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color)
getComposite
public abstract Composite getComposite()
-
返回
Graphics2D
上下文中的当前Composite
-
- 返回:
- 当前
Graphics2D
Composite
,它定义一种复合样式。 - 另请参见:
- setComposite(java.awt.Composite)
setBackground
public abstract void setBackground(Color color)
-
设置
Graphics2D
上下文的背景色。背景色用于清除区域。当为Component
构建Graphics2D
时,可以从Component
继承背景色。设置Graphics2D
上下文中的背景色仅影响后续clearRect
调用,不影响该Component
的背景色。要更改Component
的背景,请使用该Component
的相应方法。 -
- 参数:
color
- 在对clearRect
的后续调用中所用的背景色- 另请参见:
- getBackground(), Graphics.clearRect(int, int, int, int)
getBackground
public abstract Color getBackground()
-
返回用于清除区域的背景色。
-
- 返回:
- 当前
Graphics2D
Color
,它定义背景色。 - 另请参见:
- setBackground(java.awt.Color)
getStroke
public abstract Stroke getStroke()
-
返回
Graphics2D
上下文中的当前Stroke
-
- 返回:
- 当前
Graphics2D
Stroke
,它定义线条样式。 - 另请参见:
- setStroke(java.awt.Stroke)
clip
public abstract void clip(Shape s)
-
将当前
Clip
与指定Shape
的内部区域相交,并将Clip
设置为所得的交集。与当前Clip
相交之前,使用当前Graphics2D
Transform
转换指定的Shape
。 此方法用于使当前Clip
变小。要使Clip
变大,请使用setClip
。 此方法修改的用户剪贴区 独立于与设备边界和可视性关联的剪切。如果以前没有设置任何剪贴区,或者已经使用带有null
参数的 setClip 将剪贴区清除,那么指定的Shape
将成为新的用户剪贴区。 -
- 参数:
s
- 要与当前Clip
相交的Shape
。如果s
为null
,则此方法会清除当前Clip
。
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()
-
获取此
Graphics2D
上下文中Font
的呈现上下文。FontRenderContext 封装应用程序提示,如抗锯齿和小数规格,以及目标设备的特定信息(如每英寸的点数)。当使用Font
和TextLayout
等对象执行印刷格式编排时,应用程序应提供此信息。将各种呈现提示应用到文本呈现时,执行其自身布局并且需要对字形(如前距和线高)的各种特征进行精确测量的应用程序也应提供此信息。
-
Graphics详解
2017-07-13 08:44:40Graphics类包含在System.Drawing名称空间下,Graphics对象表示GDI+绘图表面,是用于创建图形图像的对象。创建要绘制的图形对象,需要先创建 Graphics对象,然后才可以使用GDI+绘制线条和形状、呈现文本或显示与操作...Graphics类包含在System.Drawing名称空间下,Graphics对象表示GDI+绘图表面,是用于创建图形图像的对象。创建要绘制的图形对象,需要先创建 Graphics对象,然后才可以使用GDI+绘制线条和形状、呈现文本或显示与操作图像。
处理图形包括两个步骤:创建Graphics对象和使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像。
1.创建 Graphics 对象
在ASP.NET中可以从任何由Image类派生的对象创建Graphics对象。通过调用System.Drawing.Graphics.FromImage(System.Drawing.Image)方法,提供要从其创建 Graphics对象的Image变量的名称,代码如下:
Bitmap bitmap = new Bitmap(80, 80);
Graphics g = Graphics.FromImage(bitmap);获得图形对象引用之后,即可绘制对象、给对象着色并显示对象。
2.使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像
使用Graphics对象绘制线条和形状、呈现文本或显示与操作图像,所用到的属性和方法如表所示。
表 Graphics类的属性及属性说明
名称
说明
Clip
获取或设置 Region,该对象限定此 Graphics 的绘图区域。
ClipBounds
获取一个 RectangleF 结构,该结构限定此 Graphics 的剪辑区域。
CompositingMode
获取一个值,该值指定如何将合成图像绘制到此 Graphics。
CompositingQuality
获取或设置绘制到此 Graphics 的合成图像的呈现质量。
DpiX
获取此 Graphics 的水平分辨率。
DpiY
获取此 Graphics 的垂直分辨率。
InterpolationMode
获取或设置与此 Graphics 关联的插补模式。
IsClipEmpty
获取一个值,该值指示此 Graphics 的剪辑区域是否为空。
IsVisibleClipEmpty
获取一个值,该值指示此 Graphics 的可见剪辑区域是否为空。
PageScale
获取或设置此 Graphics 的全局单位和页单位之间的比例。
PageUnit
获取或设置用于此 Graphics 中的页坐标的度量单位。
PixelOffsetMode
获取或设置一个值,该值指定在呈现此 Graphics 的过程中像素如何偏移。
RenderingOrigin
为抵色处理和阴影画笔获取或设置此 Graphics 的呈现原点。
SmoothingMode
获取或设置此 Graphics 的呈现质量。
TextContrast
获取或设置呈现文本的灰度校正值。
TextRenderingHint
获取或设置与此 Graphics 关联的文本的呈现模式。
Transform
获取或设置此 Graphics 的世界变换。
VisibleClipBounds
获取此 Graphics 的可见剪辑区域的边框。
表 Graphics类的方法及方法说明
名称
说明
AddMetafileComment
向当前 Metafile 添加注释。
BeginContainer
保存具有此 Graphics 的当前状态的图形容器,然后打开并使用新的图形容器。可重载。
Clear
清除整个绘图面并以指定背景色填充。
CopyFromScreen
执行颜色数据从屏幕到 Graphics 的绘图图面的位块传输。可重载。
CreateObjRef
创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (从 MarshalByRefObject 继承。)
Dispose
释放由Graphics使用的所有资源。
DrawArc
绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。可重载。
DrawBezier
绘制由4个Point 结构定义的贝塞尔样条。可重载。
DrawBeziers
用 Point 结构数组绘制一系列贝塞尔样条。可重载。
DrawClosedCurve
绘制由 Point 结构的数组定义的闭合基数样条。可重载。
DrawCurve
绘制经过一组指定的 Point 结构的基数样条。可重载。
DrawEllipse
绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。可重载。
DrawIcon
在指定坐标处绘制由指定的 Icon 表示的图像。可重载。
DrawIconUnstretched
绘制指定的 Icon 表示的图像,而不缩放该图像。
DrawImage
在指定位置并且按原始大小绘制指定的 Image。可重载。
DrawImageUnscaled
在由坐标对指定的位置,使用图像的原始物理大小绘制指定的图像。可重载。
DrawImageUnscaled
AndClipped
在不进行缩放的情况下绘制指定的图像,并在需要时剪辑该图像以适合指定的矩形。
DrawLine
可重载。绘制一条连接由坐标对指定的两个点的线条。
DrawLines
可重载。绘制一系列连接一组Point结构的线段。
DrawPath
绘制GraphicsPath。
DrawPie
可重载。绘制一个扇形,该形状由一个坐标对、宽度、高度以及两条射线所指定的椭圆定义。
DrawPolygon
可重载。绘制由一组 Point 结构定义的多边形。
DrawRectangle
可重载。绘制由坐标对、宽度和高度指定的矩形。
DrawRectangles
绘制一系列由 Rectangle 结构指定的矩形。可重载。
DrawString
在指定位置并且用指定的Brush 和Font对象绘制指定的文本字符串。可重载。
EndContainer
关闭当前图形容器,并将此Graphics的状态还原到通过调用BeginContainer方法保存的状态。
EnumerateMetafile
将指定Metafile中的记录逐个发送到回调方法以在指定的点处显示。可重载。
Equals
已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)
ExcludeClip
更新此Graphics的剪辑区域,以排除Rectangle结构所指定的区域。可重载。
FillClosedCurve
填充由 Point 结构数组定义的闭合基数样条曲线的内部。可重载。
FillEllipse
填充边框所定义的椭圆的内部,该边框由一对坐标、一个宽度和一个高度指定。可重载。
FillPath
填充 GraphicsPath 的内部。
FillPie
填充由一对坐标、一个宽度、一个高度以及两条射线指定的椭圆所定义的扇形区的内部。可重载。
FillPolygon
可重载。 填充 Point 结构指定的点数组所定义的多边形的内部。
FillRectangle
填充由一对坐标、一个宽度和一个高度指定的矩形的内部。可重载。
FillRectangles
填充由 Rectangle 结构指定的一系列矩形的内部。可重载。
FillRegion
填充Region的内部。
Flush
强制执行所有挂起的图形操作并立即返回而不等待操作完成。可重载。
FromHdc
从设备上下文的指定句柄创建新的Graphics。可重载。
FromHdcInternal
返回指定设备上下文的Graphics。
FromHwnd
从窗口的指定句柄创建新的Graphics。
FromHwndInternal
创建指定 Windows 句柄的新Graphics。
FromImage
从指定的Image创建新的Graphics。
GetHalftonePalette
获取当前Windows的半色调调色板的句柄。
GetHashCode
用作特定类型的哈希函数。GetHashCode 适合在哈希算法和数据结构(如哈希表)中使用。 (从 Object 继承。)
GetHdc
获取与此Graphics关联的设备上下文的句柄。
GetLifetimeService
检索控制此实例的生存期策略的当前生存期服务对象。 (从 MarshalByRefObject 继承。)
GetNearestColor
获取与指定的Color结构最接近的颜色。
GetType
获取当前实例的 Type。 (从 Object 继承。)
InitializeLifetimeService
获取控制此实例的生存期策略的生存期服务对象。 (从 MarshalByRefObject 继承。)
IntersectClip
将此Graphics的剪辑区域更新为当前剪辑区域与指定 Rectangle 结构的交集。可重载。
IsVisible
指示由一对坐标指定的点是否包含在此 Graphics 的可见剪辑区域内。可重载。
MeasureCharacterRanges
获取Region对象的数组,其中每个对象将字符位置的范围限定在指定字符串内。
MeasureString
测量用指定的 Font 绘制的指定字符串。可重载。
MultiplyTransform
将此 Graphics 的世界变换乘以指定的 Matrix。可重载。
ReferenceEquals
确定指定的 Object 实例是否是相同的实例。 (从 Object 继承。)
ReleaseHdc
释放通过以前对此 Graphics 的 GetHdc 方法的调用获得的设备上下文句柄。可重载。
ReleaseHdcInternal
释放设备上下文的句柄。
ResetClip
将此 Graphics 的剪辑区域重置为无限区域。
ResetTransform
将此 Graphics 的世界变换矩阵重置为单位矩阵。
Restore
将此 Graphics 的状态还原到 GraphicsState 表示的状态。
RotateTransform
将指定旋转应用于此 Graphics 的变换矩阵。可重载。
Save
保存此 Graphics 的当前状态,并用 GraphicsState 标识保存的状态。
ScaleTransform
将指定的缩放操作应用于此 Graphics 的变换矩阵,方法是将该对象的变换矩阵左乘该缩放矩阵。可重载。
SetClip
将此 Graphics 的剪辑区域设置为指定 Graphics 的 Clip 属性。可重载。
ToString
返回表示当前 Object 的 String。 (从 Object 继承。)
TransformPoints
使用此 Graphics 的当前世界变换和页变换,将点数组从一个坐标空间转换到另一个坐标空间。可重载。
TranslateClip
将此 Graphics 的剪辑区域沿水平方向和垂直方向平移指定的量。可重载。
TranslateTransform
通过使此Graphics的变换矩阵左乘指定的平移来更改坐标系统的原点。可重载。
-
C# Graphics
2018-11-22 11:20:00Graphics.FillPie方法 填充由一对坐标、一个宽度、一个高度以及两条射线指定的椭圆所定义的扇形区的内部。 Graphics.FillPie (Brush, Int32, Int32, Int32, Int32, Int32, Int32); public void FillPie ( ... -
graphics.h和graphics.lib
2010-03-15 15:54:35graphics.h和graphics.lib有什么作用大家都知道了吧,呵呵 -
Graphics类
2018-04-10 19:43:25Graphics类:可以理解为画笔,为我们提供了各种绘制图形1.画直线 drawLine(int x1,int y1,int x2, int y2)2.画矩形边框 drawRect(int x,int y,int width,int height)3.画椭圆边框 drawOval(int x,int... -
Graphics Settings
2016-09-20 19:11:42The graphics settings shown here are mostly useful for customizing and optimizing graphics-related settings across the project. 这里显示的图形设置对定制和优化项目中的图形相关的设置非常重要。 Built... -
Python graphics库详解
2017-09-22 18:51:36Tkinter库是内置的库 graphics库可以从...下载,下载后的graphics.py放到python的安装文件夹下即可 graphics库使用: # -*- coding: utf-8 -*- from math import * from turtle import * from -
Graphics消耗
2018-07-09 23:46:54WaitForTargetFPS、Gfx.WaitForPresent 和 Graphics.PresentAndSync是我们经常会被问到的参数。想必正在读此文的你也经常在Profiler中遇到过这几项CPU开销过大的情况。对此,我们今天就来好好地聊一聊这几个参数的... -
C graphics方法
2019-02-20 11:02:09C graphics方法 -
This graphics driver could not find compatible graphics hardware 解决
2018-01-03 14:17:39This graphics driver could not find compatible graphics hardware 解决 -
android Graphics
2015-11-19 15:57:31志不强者智不达,言不信者行不果。——墨翟 ...1、《android Graphics(一):概述及基本几何图形绘制》 2、《android Graphics(二):路径及文字》 3、《android Graphics(三):区域(Range)》 4、 -
graphics图形函数库简介
2018-05-15 22:34:34graphics图形函数库简介,对graphics库有了基本全面的介绍,还有内容的更新。 -
python的graphics库
2017-11-14 20:22:55在网上找了很久,这个不是c/c++中的graphics.h文件,是python专用的库文件 -
Graphics View
2016-07-26 23:13:40Graphics View框架结构有3个类: 1.场景类 QGraphicsScene 2.视图类QGraphicsView 3.图元类QGraphicsItem -
GRAPHICS.LIB
2012-05-11 12:40:45GRAPHICS.LIB C语言图形编程 图形库文件: 因为在编写C的图形程序时,用到了字体,文字库等库文件,生成的exe文件必须与这些库文件放在一起,程序才能正确跑起来,为了方便,我将这些文件都连接到了GRAPHICS.LIB这个... -
Intel HD Graphics 610 615 620 630 32位 WIN7 显卡驱动安装记
2018-06-18 23:39:55升级 G4400 CPU 到 G4600 结果 32位 WIN7 显卡 HD Graphics 630 驱动装不了,网上查了可以用 510 的驱动修改替代,还好之前的版本是 21.20.16.4860,强制安装 550 的驱动没有问题,虽然可以用了,但是看着不舒服,就... -
java 画图 graphics
2017-10-31 17:33:25发现用 java 画图特别麻烦,跟其他不少软件的画图功能区别很大,这可能跟 java 面向项目开发有关, 需要加载一堆东西。...3. 然后才能使用 Graphics 画图,它相当于一只画笔,在画布上作图。 4. 将 -
java Graphics初探
2017-09-28 15:14:03概述Graphics是Java图形绘制引擎的访问接口。获取方法有两种: 1. 通过BufferedImage对象实例获得:bufferedImage.createGraphics(); 2. 继承Swing组建的paintComponent(Graphics g)方法注意:绘制完图像后记得用... -
Python Graphics 画图
2018-01-25 11:00:01使用Python进行图像编程,要使用到Graphics库。Graphics库可以从http://mcsp.wartburg.edu/zelle/python/graphics.py获取。在Windows平台上将下载的graphics.py保存在C:\Python31\Lib\site-packages即可。 下面... -
tensorflow graphics详解
2019-05-14 18:43:26地址1:https://github.com/tensorflow/graphics 地址2:https://tensorflow.google.cn/graphics(自动跳转到 地址1) 说明:因为tensorflow地址大部分无法访问,可以在https://github.com/tensorflow/下找到... -
Graphics.DrawRectangle 方法
2020-02-03 23:47:16Graphics.DrawRectangle 方法 -
C语言graphics图形库
2014-04-21 23:59:21总共有5个文件,分别是: graphics.h graphics.lib graphicsu.lib graphicsw.lib graphicswu.lib 可以在VC环境下使用,至于VS环境没测试过,不知道 -
Android 2D Graphics学习(一)、android.graphics介绍
2018-08-12 14:08:40Android 2D Graphics的绝大部分API都在android.graphics中,它提供了低级的graphics工具,包括canvas,color filters,point,rectangle等等,我们可以使用它们直接在屏幕上绘制我们想要的图形。 在android....
-
votes and seats-2.csv
-
num
-
(新)备战2021软考网络工程师培训学习套餐
-
【数据分析-随到随学】SPSS调查问卷统计分析
-
console
-
冒泡排序
-
01-03vue学习资料.zip
-
蓝桥杯第九天
-
备战2021软考网络规划设计师顺利通关培训套餐
-
flutter插件调用APP页面、使用原生aar,framework库
-
MEMS 的多物理场仿真(COMSOL)
-
一个非常简单的CPU的设计.doc
-
【数据分析-随到随学】数据分析建模和预测
-
uni-app实战专题
-
var
-
C++ Primer——头文件保护符
-
Promise
-
【数据分析-随到随学】Tableau数据分 析+PowerBI
-
Cocos Creator游戏开发-连连看 (接入腾讯优量汇广告)
-
微信支付2021系列之扫码支付一学就会java版