绘制三维文字----java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Panel;
public class Text3DPanel extends Panel implements Runnable {


private Image image; //import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Panel;
public class Text3DPanel extends Panel implements Runnable {


private Image image; //绘制文字的Image对象
private Graphics graphics; //绘制文字的Graphics对象
private Thread thread;  //显示三维文字线程
private int width,height; //显示宽度、高度
private String message; //显示信息
private int fontSize; //文字尺寸
private Font font; //字体
private String[] fonts;
public Text3DPanel(String message,int width,int height){
this.message = message;
this.width = width;
this.height = height;
init();
start();
}
public void init() {
image = createImage(width, height); //得到Image实例
// graphics= image.getGraphics(); //得到Grahpics实例
if (message == null) { //如果信息为空
message="三维文字"; //设置默认信息
}
fontSize = 30; //设置字体大小
GraphicsEnvironment eq = GraphicsEnvironment.getLocalGraphicsEnvironment();
fonts = eq.getAvailableFontFamilyNames();
// fonts = Toolkit.getDefaultToolkit().getFontList();


}



public void start() { 
if (thread == null) {
thread = new Thread(this);  //实例化线程
thread.start(); //运行线程
}
}


public void run() { //线程运行主体
while (thread != null) {
try {
Thread.sleep(300L); //线程休眠
} catch (InterruptedException ex) {
}
repaint(); //重绘屏幕
}
}


public void update(Graphics g) {
int index = (int)(Math.random()*fonts.length);
font = new Font(fonts[index], 1, fontSize); //得到字体实例
// font = new Font("TimesRoman", 1, fontSize); //得到字体实例
g.setFont(font);  //设置显示字体
int j = (int) (255 * Math.random()); //变量,用于生成渐变颜色
int k = (int) (255 * Math.random());
int l = (int) (255 * Math.random());
// int j = 200;
// int k = 192;
// int l = 200;
System.out.println(j+","+k+","+l+","+index);
g.setColor(Color.black); //设置当前颜色
g.fillRect(0, 0, width, height); //填充背景
//绘制了6层底色字符串
for (int i = 0; i < 6; i++) { //三维深度
g.setColor( //设置渐变颜色
new Color(
255 - ((255 - j) * i) / 10,
255 - ((255 - k) * i) / 10,
255 - ((255 - l) * i) / 10));
g.drawString(message, 15 - i, height - 15-i); //绘制字符串
}
//把字符串覆盖到屏幕
g.drawImage(image, 0, 0, this); //绘制Image到屏幕
}


public void paint(Graphics g) {
update(g);
}
}Image对象
private Graphics graphics; //绘制文字的Graphics对象
private Thread thread;  //显示三维文字线程
private int width,height; //显示宽度、高度
private String message; //显示信息
private int fontSize; //文字尺寸
private Font font; //字体
private String[] fonts;
public Text3DPanel(String message,int width,int height){
this.message = message;
this.width = width;
this.height = height;
init();
start();
}
public void init() {
image = createImage(width, height); //得到Image实例
// graphics= image.getGraphics(); //得到Grahpics实例
if (message == null) { //如果信息为空
message="三维文字"; //设置默认信息
}
fontSize = 30; //设置字体大小
GraphicsEnvironment eq = GraphicsEnvironment.getLocalGraphicsEnvironment();
fonts = eq.getAvailableFontFamilyNames();
// fonts = Toolkit.getDefaultToolkit().getFontList();


}



public void start() { 
if (thread == null) {
thread = new Thread(this);  //实例化线程
thread.start(); //运行线程
}
}


public void run() { //线程运行主体
while (thread != null) {
try {
Thread.sleep(300L); //线程休眠
} catch (InterruptedException ex) {
}
repaint(); //重绘屏幕
}
}


public void update(Graphics g) {
int index = (int)(Math.random()*fonts.length);
font = new Font(fonts[index], 1, fontSize); //得到字体实例
// font = new Font("TimesRoman", 1, fontSize); //得到字体实例
g.setFont(font);  //设置显示字体
int j = (int) (255 * Math.random()); //变量,用于生成渐变颜色
int k = (int) (255 * Math.random());
int l = (int) (255 * Math.random());
// int j = 200;
// int k = 192;
// int l = 200;
System.out.println(j+","+k+","+l+","+index);
g.setColor(Color.black); //设置当前颜色
g.fillRect(0, 0, width, height); //填充背景
//绘制了6层底色字符串
for (int i = 0; i < 6; i++) { //三维深度
g.setColor( //设置渐变颜色
new Color(
255 - ((255 - j) * i) / 10,
255 - ((255 - k) * i) / 10,
255 - ((255 - l) * i) / 10));
g.drawString(message, 15 - i, height - 15-i); //绘制字符串
}
//把字符串覆盖到屏幕
g.drawImage(image, 0, 0, this); //绘制Image到屏幕
}


public void paint(Graphics g) {
update(g);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值