- 1、本文档共95页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
rec2=new Rectangle2D.Double(50,0,100,100), rec3=new Rectangle2D.Double(125,75,100,100), rec4=new Rectangle2D.Double(50,125,100,100), rec5=new Rectangle2D.Double(-25,75,100,100); Graphics2D g2=(Graphics2D)g; g2.setPaint(Color.red); //将用户坐标系的原点(0,0)平移到屏幕坐标系x为100,y为50像素点的位置 g2.translate(100,50); // radians=degree * pie / 180 g2.rotate((45*java.lang.Math.PI)/180); //将图形旋转45° g2.fill(rec1); //画左上角坐标为(0,0),长与宽为100的填充矩形 //创建仿射变换对象,设置几何图形变换为默认方式 g2.setTransform(new AffineTransform( )); //创建一个AlphaCcomposite类的复合对象ac,规则为50%的透明度 AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f); g2.setComposite(ac); //设定重叠对象的颜色复合方式 g2.setPaint(Color.green); g2.fill(rec2); g2.setPaint(Color.blue); g2.fill(rec3); g2.setPaint(Color.yellow); g2.fill(rec4); g2.setPaint(Color.pink); g2.fill(rec5); } } 该程序的运行结果如图9.12所示。 图9.12 程序c9_10的运行结果 9.4.6 绘制剪切文字图形 Java 2D API中提供了文字图形的剪切功能,该功能通过在图形环境中设置一个剪切形状,来将所有的绘图操作限制在该剪切形状的内部进行。剪切文字图形的操作步骤如下 (1) 创建文字字符串对象; (2) 用FontRenderContext类创建字体绘制环境对象; (3) 用TextLayout类创建文本布局对象; (4) 用GeneralPath类创建文本图形的路径对象; (5) 对用户坐标系进行平移变换; (6) 创建图形对象,该对象是通过调用文本布局对象的getOutline( )成员方法得到的图形轮廓; (7) 用路径对象的append( )成员方法,添加图形对象到路径对象中; (8) 用Graphics2D类对象的成员方法draw( )画文字图形,并用Graphics2D类对象的成员方法clip( )剪切文字图形。 (9) 设置剪切的形状,绘制一组线条。 ?【示例程序c9_11.java】 绘制剪切文字图形。 import java.awt.event.*; import java.awt.font.*; import java.awt.geom.*; import javax.swing.*; import java.awt.*; public class c9_11 extends JApplet { private Shape clipShape; public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; clipShape = makeClipShape(g2); g2.draw(clipShape); g2.clip(clipShape); //剪切文字图形 final int NLINES =90; Point2D p = new Point2D.Double(0, 0); for (int i = 0; i NLINES; i++) { double x = (2 * getWidth( ) * i) / NLINES; double y = (2 * getHeight( ) * (NLINES
文档评论(0)