Java文字特效(一)

今天说几种文字特效,分别是立体效果、阴影效果、倾斜效果和渐变效果,效果呈现如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进入正题,实现这些效果是通过重写JComponent类的paint()方法,在该方法中使用Graphics类或者Graphics2D的一些方法,完成具有特效的文字绘制
(一)立体效果的文字
使用Graphics类的setFont()方法设置完字体、字型和字号后,使用Graphics类的setColor()方法将绘图上下文的前景色设置为灰色,然后使用Graphics类的drawString()方法绘制文本,并且每次绘制的文本都向右下方移动一小段距离,最后将绘图上下文的前景色更改为黑色,再绘制一次文本,从而实现立体字效果。用到的Graphics方法如下:

public abstract void drawString(String str,int x,int y);//str是绘制的文本内容,x、y是绘制点的坐标
public abstract void setFont(Font font); //Font是字体对象,其创建方法即可设置字体和大小
public Font(String name,int style,int size);//Font的构造方法,其中name是字体的名称,style是字体的样式,size是字体的大小
public abstract void setColor(Color color);//color是文本或图形设置的颜色对象
public Color(int r,int g,int b);//Color 的构造方法,其中rgb是其对应的RGB值
//Color中有一些静态常量,所以除了创建对象外还可直接用Color.red等常量来设置颜色

具体实现

public class SolidTextPanel extends JPanel {
	public void paint(Graphics g) {
		String value = "Java文字特效";
		int x = 16;
		int y = 100;
		Font font = new Font("宋体",Font.BOLD,72);
		g.setFont(font);
		g.setColor(Color.GRAY);
		int i = 0;
		while(i<8) {
			g.drawString(value, x, y);
			x += 1;
			y += 1;
			i++;
		}
		g.setColor(Color.BLACK);
		g.drawString(value, x, y);
	}
}

(二)阴影效果的文字
使用Graphics类的setFont()方法设置完字体、字型和字号后,使用Graphics类的setColor()方法将绘图上下文的前景色设置为灰色,然后使用Graphics类的drawString()方法绘制文本,再将绘图上下文的前景色更改为黑色,并且将绘制的文本都向左上方移动一小段距离,从而实现阴影文字的效果。用到的方法跟上面同,故不赘述。
具体实现:

public class ShadowTextPanel extends JPanel {
	public void paint(Graphics g) {
		String value = "Java文字特效";
		int x = 16;
		int y = 100;
		Font font = new Font("华文行楷",Font.BOLD,72);
		g.setFont(font);
		g.setColor(Color.GRAY);
		int i = 0;
		g.drawString(value, x, y);
		x -= 3;
		y -= 3;
		g.setColor(Color.BLACK);
		g.drawString(value, x, y);
	}
}

(三)倾斜效果的文字
使用Graphics2D类的setShear()方法,倾斜绘图上下文对象,然后使用从Graphics类继承的setFont()方法设置字体、字型和字号,使用drawString()方法绘制文本,从而实现倾斜文字的效果。

public abstract void shear(double shx,double shy);
//shx,shy分别是在正x轴、正y轴方向移动坐标的乘数,可以作为相应y、x坐标的函数(注意是相反的)

具体实现

public class ShearTextPanel extends JPanel {
	public void paint(Graphics g) {
		Graphics2D g2 = (Graphics2D)g;
		String value = "Java文字特效";
		int x = 10;
		int y = 250;
		Font font = new Font("华文行楷",Font.BOLD,72);
		g2.setFont(font);
		g2.shear(0.1, -0.4);
		g2.drawString(value, x, y);
	}

}

(四)渐变效果的文字
使用Graphics2D类的setPaint()方法,为绘图上下文指定GradientPaint类创建的渐变色对象,从而实现绘制渐变效果文字的功能。

public abstract void setPaint(Paint paint);
//paint是封装了渐变颜色的Paint对象

具体实现

public class GradientTextPanel extends JPanel {
	public void paint(Graphics g) {
		Graphics2D g2 = (Graphics2D)g;
		String value = "Java";
		int x = 80;
		int y = 130;
		Font font = new Font("华文楷体",Font.BOLD,60);
		GradientPaint paint = new GradientPaint(20,20,Color.BLUE,100,120,Color.RED,true);
		g2.setPaint(paint);
		g2.setFont(font);
		value = "Java文字特效";
		g2.drawString(value, x, y);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值