请问Shape类型是怎样一种类型 RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Shape是接口 很多类(如Rectangle Arc2D Area等)实现了这个接口 示例化这些类可以进行填充或描边示例如下:import java.awt.*;import javax.swing.*;import java.awt.geom.*;public class Test extends JComponent{ /** 起始角度和跨度 */ int argstart = 45, argextent = 90; /** 中心坐标 */ int x = 300, y = 200; /** 字符串位置 */ int sx = 285, sy = 200; /** 小半径,大半径 */ int rmin = 100, rmax = 150; public Test() { this.setSize(600,400); this.setPreferredSize(new Dimension(600,400)); } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; Arc2D pieArcmin = new Arc2D.Float(Arc2D.PIE); pieArcmin.setFrame(x-rmin, y-rmin, rmin*2, rmin*2); pieArcmin.setAngleStart(argstart); pieArcmin.setAngleExtent(argextent); Arc2D pieArcmax = new Arc2D.Float(Arc2D.PIE); pieArcmax.setFrame(x-rmax, y-rmax, rmax*2, rmax*2); pieArcmax.setAngleStart(argstart); pieArcmax.setAngleExtent(argextent); Area apieArcmin = new Area(pieArcmin); Area apieArcmax = new Area(pieArcmax); apieArcmax.subtract(apieArcmin); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); AffineTransform at = AffineTransform.getTranslateInstance(4, 6); g2.setColor(new Color(0,0,0,50)); g2.fill(at.createTransformedShape(apieArcmax)); g2.setColor(Color.red); g2.fill(apieArcmax); GradientPaint p = new GradientPaint(x-rmax, y-rmax, new Color(250,250,250), x+rmax, y+rmax, new Color(250,250,250,100)); g2.setPaint(p); g2.fill(apieArcmax); g2.setColor(Color.red); g2.draw(apieArcmax); g2.setColor(new Color(0,0,0,50)); g2.drawString("COOL", sx+2, sy+2); g2.setColor(Color.black); g2.drawString("COOL", sx, sy); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); } public static void main(String[] args) { JFrame f = new JFrame(); f.getContentPane().setLayout(new BorderLayout()); f.getContentPane().add(new Test()); f.pack(); f.setVisible(true); }} Shape 接口提供了表示一些几何形状的对象的定义。Shape 是由 PathIterator 对象描述的,它可以表示 Shape 的轮廓以及确定该轮廓如何将 2D 平面划分成内点和外点的规则。每个 Shape 对象都提供回调,以获取几何形状的边框,确定点或矩形是部分还是全部位于 Shape 内部,并检索一个描述 Shape轮廓的轨迹路径的 PathIterator 对象。 一般情况下我们不需要自己去实现Shape接口,在java.awt.geom 包中已经封装了大部分的几何图形类,非特殊情况下都可以满足需求。 问一个关于Fork-Join框架的问题 ftp在断点续传文件时发生错误 如何用二进制位来做标识 安装完JB9后遇到的一个奇怪问题 如何在一个windows2003 里同时配置jdk1.4 和jdk1.5 单核和双核机器在运行多线程程序时结果是否不同 java 急 求救 Thinking in java 2nd edition 系统运行一段时间变得很慢,cpu占有正常,内存占用较少,仅有30多M,为什么??? 文件不能删除的原因。急! 怎样学习用swing做记事本 怎么入门啊 关于 ECSide的一个问题
示例如下:
import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;public class Test extends JComponent
{
/** 起始角度和跨度 */
int argstart = 45, argextent = 90;
/** 中心坐标 */
int x = 300, y = 200;
/** 字符串位置 */
int sx = 285, sy = 200;
/** 小半径,大半径 */
int rmin = 100, rmax = 150;
public Test()
{
this.setSize(600,400);
this.setPreferredSize(new Dimension(600,400));
} public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Arc2D pieArcmin = new Arc2D.Float(Arc2D.PIE);
pieArcmin.setFrame(x-rmin, y-rmin, rmin*2, rmin*2);
pieArcmin.setAngleStart(argstart);
pieArcmin.setAngleExtent(argextent);
Arc2D pieArcmax = new Arc2D.Float(Arc2D.PIE);
pieArcmax.setFrame(x-rmax, y-rmax, rmax*2, rmax*2);
pieArcmax.setAngleStart(argstart);
pieArcmax.setAngleExtent(argextent);
Area apieArcmin = new Area(pieArcmin);
Area apieArcmax = new Area(pieArcmax);
apieArcmax.subtract(apieArcmin);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform at = AffineTransform.getTranslateInstance(4, 6);
g2.setColor(new Color(0,0,0,50));
g2.fill(at.createTransformedShape(apieArcmax));
g2.setColor(Color.red);
g2.fill(apieArcmax);
GradientPaint p = new GradientPaint(x-rmax, y-rmax, new Color(250,250,250),
x+rmax, y+rmax, new Color(250,250,250,100));
g2.setPaint(p);
g2.fill(apieArcmax);
g2.setColor(Color.red);
g2.draw(apieArcmax);
g2.setColor(new Color(0,0,0,50));
g2.drawString("COOL", sx+2, sy+2);
g2.setColor(Color.black);
g2.drawString("COOL", sx, sy);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
} public static void main(String[] args)
{
JFrame f = new JFrame();
f.getContentPane().setLayout(new BorderLayout());
f.getContentPane().add(new Test());
f.pack();
f.setVisible(true);
}
}
Shape 是由 PathIterator 对象描述的,它可以表示 Shape 的轮廓以及确定该轮廓如何将 2D 平面划分成内点和外点的规则。
每个 Shape 对象都提供回调,以获取几何形状的边框,确定点或矩形是部分还是全部位于 Shape 内部,并检索一个描述 Shape
轮廓的轨迹路径的 PathIterator 对象。
一般情况下我们不需要自己去实现Shape接口,在java.awt.geom 包中已经封装了大部分的几何图形类,
非特殊情况下都可以满足需求。