java打印文字点阵图_java中如何让文字以一个圆为轨迹来显示,文字的中心必须在圆上...

该博客展示了如何使用Java编程实现文字沿着圆形路径显示,具体做法是将每个字符定位到圆周上的特定位置,利用FontMetrics计算字符宽度和高度,并进行坐标转换,最后在画布上绘制文字。
摘要由CSDN通过智能技术生成

展开全部

import java.awt.*;

import javax.swing.*;

public class ShowRoundChar extends JPanel{

Font font = new Font("宋体",Font.PLAIN,40);

String display = "这是一个e5a48de588b662616964757a686964616f31333264646463测试语句,没其他意思!";

char [] cdis = display.toCharArray();

Point [] cpos = null;

Point[] createPos(FontMetrics fm,char[] cdis, Point center,int radio){

if(cdis == null||cdis.length == 0)

return null;

Point [] cpos = new Point[cdis.length];

double d_angle = 2*Math.PI/cpos.length;

double angle = 0;

int index = 0;

while(index

double cx = center.x+radio*Math.cos(angle) - fm.charWidth(cdis[index])/2;

double cy = center.y+radio*Math.sin(angle) + fm.getAscent()/2;

cpos[index] = new Point((int)cx,(int)cy);

angle += d_angle;

index++;

}

return cpos;

}

void drawString(Graphics g){

g.setColor(Color.BLUE);

int index = 0;

while(index

g.drawString(cdis[index]+"", cpos[index].x, cpos[index].y);

index++;

}

}

public void paint(Graphics g){

g.setFont(font);

Point center = new Point(200,200);

cpos = createPos(g.getFontMetrics(),cdis,center,150);

drawOval(g,center,150);

drawString(g);

}

public void drawOval(Graphics g,Point center,int radio){

//g.setColor(Color.RED);

g.setColor(new Color(125<<24|255<<16|0<<8|0));

g.drawOval(center.x-radio, center.y-radio, radio*2, radio*2);

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO 自动生成方法存根

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(400,430);

frame.add(new ShowRoundChar());

frame.setVisible(true);

}

}

4ead19b90ac516ba1e46b4399ee84227.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值