Java AWT
来源:互联网 发布:linux echo命令用法 编辑:程序博客网 时间:2024/05/21 01:53
笔划Stroke
Graphics2D的draw方法,使用当前设置的笔划(Stroke)来画形状的边界。
可以使用Graphics2D的setStroke方法,来设置当前的笔划(Stroke)。
需要给setStroke方法提供一个实现了Stroke接口的入参。BasicStroke类实现了Stroke接口,也是Java 2D API中唯一一个实现了Stroke接口的类。
现在看下BasicStroke类怎么构造:BasciStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase)
width 表面笔划的宽度,默认是宽度为1个像素。
cap 笔划端口样式,针对像素大于1的情况。有以下三种:
1. 平头样式(butt cap) 在笔划的末端处就结束了
2. 圆头样式(round cap)在笔划的末端处加了一个半圆
3. 方头样式(square cap)在笔划的末端处加了半个方块
join 定义两个较粗的笔划相遇时的情况,有以下三种:
1. 斜连接(bevel join),用一条直线将两个笔划连接起来,该直线与两个笔划之间的夹角的平分线垂直。
2. 圆连接(round join),延长了每个笔划,并使其带有一个圆头。
3. 斜尖连接(miter join),通过增加一个尖峰,从而同时延长了两个笔划。
miterlimit
dash
dash_phase
着色Paint
Graphics2D的fill方法,使用当前设置的着色Paint来填充形状的内部。
可以使用Graphics2D的setPaint方法,来设置当前的着色Paint。
需要给setPaint方法提供一个实现了Paint接口的入参。Java 2D API中,提供了三个实现了Paint接口的类:
Color类:g2d.setPaint(Color.RED);
GradientPaint类:通过在两个给定的颜色值之间进行渐变,从而改变使用的颜色。g2d.setPaint(new GradientPaint(p1, Color.RED, P2, Color.YELLOW);
TexturePaint类:用一个图像重复地对一个区域进行着色。g2d.setPaint(new TexturePaint(bufferedImage, anchorRectangle));
坐标转换
比例缩放:放大或者缩小从一个固定点出发的所有距离。
旋转:环绕着一个固定中心旋转所有点。
平移:将所有点移动一个固定的量。
切变:
Graphics2D提供了4个方法,scale、rotate、translate和shear,对应上述四种转换。
可以组合这些操作:
g2d.rotate(angle);
g2d.scale(2,2);
g2d.draw(。。。。。。);
这种情况,变换的顺序是无关紧要的。但下述情况变换顺序就很重要了:
g2d.translate(x,y); // 将某个形状从原点处移回到(x,y)
g2d.rotate(angle); // 旋转
g2d.translate(-x,-y); // 将某个形状从点(x,y)处移动到原点
注意变换是逆序执行的,最后一个变换操作是第一个被应用的。以上三步实现了将形状安装某个指定的点进行旋转。等价于g2d.rotate(angle,x,y)。
仿射变换(affine transformation),AffineTransform类:
AffineTransform t = new AffineTransform(a,b,c,d,e,f);
g2d.setTransform(t); // 用t替换当前的transformation
g2d.transform(t); // 将t和当前的transformation组合起来
AffineTransform oldTransform = g2d.getTransform(); // 保存旧的transform
g2d.transform(t); // apply temporary transform
// now draw
g2d.setTransform(oldTransform); // 画完后,恢复。
- java.awt
- java.awt
- java awt
- java-awt
- Java AWT
- java awt
- java awt,swing
- java awt绘图
- Java AWT是什么?
- java awt Menu例子
- java awt 级联菜单
- Java - AWT 090822
- java.awt.Robot
- java.awt.Frame类
- java.awt.Label类
- java.awt.Button类
- java.awt.TextField类
- java.awt.TextArea类
- 2013-05-23期-定时抓取数据库内容
- 2013-07-08期-范围查询及结果排序
- IOS7中 改变cell的宽度
- [Unity3d]unity从入门到精通官方教程
- Android 5.0 曝光:巨变
- Java AWT
- 嵌入式笔试题
- lucene4.3注意事项以及相关代码
- 不支持项目类型(.csproj)
- IOS7 中 UITableViewCell 删除视图不还原
- HTTP实现断点续传的方式
- QT分割窗口QSplitter类 .
- HDU 1085 Holding Bin-Laden Captive! 母函数
- 开发者不容错过的12款开源JavaScript库