java Graphics2D 画图

在Java中,当需要画一些特殊的形状时,比如说椭圆、矩形等,可以使用 Graphics2D 来绘图。

一些API:

g.drawLine(3,3,50,50);//画一条线段
g.drawRect(80,100,40,25);//画线框
g.drawOval(10,10,60,120);//画椭圆

//画多边形
int px1[]={50,90,10,50};//首末点相重,才能画多边形
int py1[]={10,50,50,10};
g.setColor(Color.blue);
g.fillPolygon(px1,py1,4);

关于画图的更多内容,可以参考网上的一些介绍,或者官方API。

Graphics2D 对象中有个函数是 translate(x,y),该函数的功能如下:

将椭圆的原点移动到 (x,y)。

该函数和 rotate函数结合使用,可以实现将一个图形绕一个点旋转。

g2.rotate(Math.PI * rotate / 180.0);   //注意该函数是绕着椭圆的原点旋转

比如说,将一个水平的椭圆绕着椭圆的中心点旋转一个角度,需要先将椭圆的原点移动到一个位置,然后再绕着新的原点旋转,示意图如下:

新原点的坐标可以根据水平状态下原点的坐标以及旋转的角度算出来。需要注意的是:先移动原点,然后再旋转,顺序不能乱。

示例代码:

Graphics2D g2 = (Graphics2D)g.create();
g2.setColor(Color.red);
g2.translate(translateX, translateY);
g2.rotate(Math.PI * rotate / 180.0);
g2.drawOval(0, 0, ovalWidth - 1, ovalHeight - 1);
g2.translate(-translateX, -translateY);
g2.dispose();
时间: 2024-07-31 14:33:38

java Graphics2D 画图的相关文章

java Graphics2D根据流程xml文件画流程图(完整代码)

1.先来一张效果图 2.java代码 package com.geoway.plan.action; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.geom.GeneralPath; import java.awt.image.Buffered

java图形处理-Java Graphics2D

package com.mapbar.graphics; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax

Java Graphics2D 画出文字描边效果

在CSDN看到的,在此记下. (http://bbs.csdn.net/topics/390703095) import javax.swing.*; import java.awt.*; import java.awt.font.GlyphVector;   public class Test extends JComponent {     public static void main(String[] args) {       SwingUtilities.invokeLater(ne

Java关于画图工具常用颜色预留区的颜色添加

为了加深对面向对象编程的理解,我希望通过使用swing包和awt包的类实例化对象,去加深面向对象这个概念.于是想编写一个简易的画图工具. 目前实现的功能相对简单,工具栏共有五个功能面板,分别是:图形选择.选择前景色.选择背景色.常用颜色选择.编辑颜色. 我们都知道,windows自带的常用颜色选择面板最下面一行预留了可以自定义添加颜色的空白格. 这一行可以通过右侧的编辑颜色按钮所弹出的颜色选择器来添加想要的颜色,每添加一次,就会增加一个颜色 可是预留的位置只有十个,那么如果填满之后再次添加会发生

java Graphics2D drawString()内容换行问题

//字符串总宽度 private int getStringLength(Graphics g,String str) { char[] strcha=str.toCharArray(); int strWidth = g.getFontMetrics().charsWidth(strcha, 0, str.length()); System.out.println("字符总宽度:"+strWidth); return strWidth; } //每一行字符串宽度  自定义  也就是画

Java学习笔记(二)不定时更新

Java语言画图 package cn.witksy.dev; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; /** * Author: Alfred * Created: 2015/5/7 */ public class Main { public void run() {

Java实现时钟小程序【代码】

哎,好久没上博客园发东西了,上一次还是两个月前的五一写的一篇计算器博客,不过意外的是那个程序成了这学期的Java大作业,所以后来稍微改了一下那个程序就交了上去,这还是美滋滋.然后五月中旬的时候写了一个2048小游戏,由于写完第二个版本第二天就生病了,休养了好几天才缓过来,最后嫌麻烦就没发园子里了,直接挂Github上了.然后又忙着准备期末,期末玩休息了5天又开始数据库课程设计,用Java写了一个小系统,花了一个星期左右,写了差不多3500行了.然后写完就放学了,放学的日子就感觉自己开始懒散了,静

画图工具

亿图ppt画图visioONENOTE 如果是由实验数据来做图的话,我个人首推origin.数据导入到做图直至最后的对线形.图例.坐标轴.框图等的修饰的操作都非常容易操作,而且很容易上手.(于是乎我很不理解@章佳杰 同学说的“Origin也用过,不过用的比较少,他对画图方面的操作还是少了点,要修改一些样式之类的不方便.”这句话……)其他如流程图,示意图之类的另当别论,visio.甚至直接用Word.PPT之类都可以很方便来绘制,更不用说Illustrator这种神器了. 如果画示意图,用visi

用JAVA实现数字水印(可见)

数字水印有可见不可见之分,可见的比如课件上印有学校校徽,微博发图片会水印上上传者的信息及微博logo等. 用java实现可见的数字水印,草人主要是用到了java.awt包中的AlphaComposite类,当然在实现之前先介绍一下AlphaComposite类: AlphaComposite类是关于两个目标重叠的混合处理类,此类实现的特定规则是 T. Porter 和 T. Duff 合著的 “Compositing Digital Images”, SIGGRAPH 84, 253-259 中