//剪切文字图形
//import java.awt.event.*;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.awt.font.*;
public class ClipShape extends JApplet{
/**
*
*/
private static final long serialVersionUID = 1L;
Shape clipshape;
public void paint(Graphics g){
Graphics2D g2=(Graphics2D)g;
clipshape=makeclipshape(g2);
g2.draw(clipshape);//
g2.clip(clipshape);//剪切文字图形
final int N=90;
Point2D p=new Point2D.Double(0,0);
for(int i=0;i<N;i++){
double x=(2*getWidth()*i)/N;
double y=(2*getHeight()*i)/N;
Point2D q=new Point2D.Double(x,y);
//设置剪切的形状,绘制一组线条
g2.draw(new Line2D.Double(p,q));
}//end for
}//end paint
Shape makeclipshape(Graphics2D g2){
FontRenderContext context=g2.getFontRenderContext();
Font f=new Font("隶书",Font.PLAIN,80);
//创建文本图形的路径对象
GeneralPath path=new GeneralPath();
//创建文本布局对象
TextLayout layout=new TextLayout("Hello",f,context);
//将用户坐标系的基点移到屏幕坐标系(0,80)处
AffineTransform transform=AffineTransform.getTranslateInstance(0,80);
// 创建图形对象 该对象是文本布局对象的图形轮廓对象
Shape outline=layout.getOutline(transform);
path.append(outline,false);
layout=new TextLayout("你好",f,context);
transform=AffineTransform.getTranslateInstance(0,170);
outline=layout.getOutline(transform);
//设置false,表示在第一个图形画完 在抬笔 画第二个图形
path.append(outline,false);
return path;
}//end makeclipeshape
}//end class
错误
Clipshape.java:18: 无法将 java.awt.Graphics2D 中的 draw(java.awt.Shape) 应用于 (
Shape)
g2.draw(clipshape);//
^
Clipshape.java:19: 无法将 java.awt.Graphics2D 中的 clip(java.awt.Shape) 应用于 (
Shape)
g2.clip(clipshape);//剪切文字图形
^
Clipshape.java:41: 不兼容的类型
找到: java.awt.Shape
需要: Shape
Shape outline=layout.getOutline(transform);
^
Clipshape.java:42: 找不到符号
符号: 方法 append(Shape,boolean)
位置: 类 java.awt.geom.GeneralPath
path.append(outline,false);
^
Clipshape.java:45: 不兼容的类型
找到: java.awt.Shape
需要: Shape
outline=layout.getOutline(transform);
^
Clipshape.java:47: 找不到符号
符号: 方法 append(Shape,boolean)
位置: 类 java.awt.geom.GeneralPath
path.append(outline,false);
^
Clipshape.java:48: 不兼容的类型
找到: java.awt.geom.GeneralPath
需要: Shape
return path;
^
7 错误