Java 2D API强大而复杂,不过大多时候我们只需使用java.awt.Graphcis类的部分功能。下面的内容将覆盖大多数的常见应用。

Graphics 类中的方法大致可以分为两类:

  • Draw and fill方法,用于绘制基本的图形、文本和图像;
  • 属性设置方法,用于控制绘制和填充的效果。setFont()和setColor()等方法就属于这类方法。

下图显示这些方法和图像的对应关系:

1. drawString()

用于绘制文本:

g.drawString("Hello", 10, 10);

参数分别为:

  • 待绘制字符串
  • 起点x和y坐标

import java.applet.Applet;

import java.awt.Graphics;

public class Graphics_drawString extends Applet {

@Override

public void paint(Graphics g){

g.drawString("Hello Graphics", 75, 100);

}

}

输出界面如下:

2. drawImage

绘制图像:

import java.applet.Applet;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

public class Graphics_drawImage extends Applet {

@Override

public void paint(Graphics g) {

Image img = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("th.png"));

g.drawImage(img, 0, 0, 400, 500, this);

}

}

th.png是我随便选的一个图片,输出界面如下:

3. drawLine, drawArc, drawRect, drawOval, drawPolygon

这些方法用于绘制不同的形状。

根据需求不同,可以根据以下的建议选择Graphics的方法:

  • 是否以图片原始大小渲染图片,或者根据指定rectangle缩放图片;
  • 对图片的透明区域,是填充还是不管它。

2D graphics 的每个点都需要 (x,y) 坐标确定,所以所以的绘制和填充方法都需要位置信息。例如,绘制线条:

Graphics.drawLine(int x1, int y1, int x2, int y2);

其中,(x1, y1)是线条起点,(x2, y2) 是线条终点。

Java 2D API - 2. Graphics 入门的更多相关文章

  1. Java 2D API - 1. 基本概念

    Java 2D API扩展AWT包,对二维图形.文本及成像功能提供了支持,可用于开发复杂的界面.绘图软件和图像编辑器.Java 2D对象位于用户坐标空间(User coordinate space), ...

  2. Google 地图 API V3 使用入门

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  3. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  4. 【百度文库课程】Java语言基础与OOP入门学习笔记一

    一. Java的历史与由来 原名Oak,针对嵌入式系统开发设计,语法与C/C++基本一致 二. Java语言特点 Java由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应 ...

  5. 关于c#调用java中间件api的几个问题

    由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...

  6. Kylin Java RESTful API

    最近在做大数据方面的开发, 学习研究了一段时间的kylin系统, 对于前端开发需要使用 RESTful API ,但是官网并没有提供详细的Java  API. 经过几天的看文档,最终写出了 Java ...

  7. libj 0.8.2 发布,Java/JavaScript API 的 C++ 实现

    libj 0.8.2 增加了一些新的字符串相关的方法. libj 是一个跨平台的运行库,相当于提供了类似 Java/JavaScript API.libj 的内存管理是自动的,基于 shared_pt ...

  8. Android使用Java Mail API发送邮件

    最近在考虑为已经有的一个应用程序增加一个用户反馈的功能,用户可以通过反馈功能将用户的意见和建议.程序出现的问题以一种更符合用户习惯的方式反馈回来.网上也有一些实现好的反馈程序的服务,包括bug的提交. ...

  9. Java Attach API

    catalog . instrucment与Attach API . BTrace: VM Attach的两种方式 . Sun JVM Attach API 1. instrucment与Attach ...

随机推荐

  1. iOS开发之cell多按钮

    iOS开发经常出现cell需要多个按钮,一般以为要导入第三方框架.但其实iOS 8以后,系统提供了UITableViewRowAction以及新的delegate方法,使得自定义一些操作变得非常容易. ...

  2. sublime 中文乱码

      一.安装Package Control 使用Sublime Text2首先就要安装Package Control,这样就能使用丰富的插件包了 (1)访问Package Control站点按照提示复 ...

  3. sql server 更新视图的sp

    create procedure RefreshAllViewas begin declare @ViewName varchar(250) declare #views cursor for sel ...

  4. BZOJ4724 [POI2017]Podzielno

    4724: [POI2017]Podzielno Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 77  Solved: 37[Submit][Stat ...

  5. 关于位图读取函数int Load_Bitmap_File的lseek问题。

    事情是这样的,本人在编译3D游戏编程大师技巧中的程序是遇到了一个关于位图读取函数int Load_Bitmap_File的lseek问题. 我使用以下位图读取函数读取位图事报错如下: int Load ...

  6. QT QString 很全的使用 (转)

    QString, QByteArray, 和 QVariant这三个类和容器有许多相同之处,并且在一些情况下可以被当作特殊的容器. 同样,像容器,这些类使用隐式共享来优化内存和速度. 我们将从QStr ...

  7. web跨域访问,session丢失的问题

    web跨域访问,session丢失的问题25 http://www.iteye.com/problems/71265 http://www.iteye.com/topic/264079 具体情况如下: ...

  8. 解除svn版本控制

    步骤1.去除目录下的所有.svn文件夹:两种方式: 方法1:搜索目录下所有.svn文件,删除: 方法2:复制下列文字到txt中,然后把扩展名改为reg,放到需要去除.svn的目录中,双击运行注册表即可 ...

  9. 一个简易的反射类库NMSReflector

    转自:http://blog.csdn.net/lanx_fly/article/details/53914338 背景简介 以前看过一些代码,是简单的读取SqlReader然后赋值给Model,我不 ...

  10. ecstore-lnmp环境下crontab不执行原因

    因为lnmp.org默认禁止了proc_open函数,需要开启 开启后 lnmp restart ==== contab还是用crontab -e好,有些用www用户的似乎执行不了