Graphics2D绘制图形

1.文字压缩显示
参照java自带的demo下的jfc/java2d的ColorConvert,做了简单的修改。文字压缩显示的思路是将图片的宽度设为期望的宽度即可
public class ColorConvert extends JPanel {

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension d = getSize();
render(d.width, d.height / 2, (Graphics2D) g);
}

public void render(int w, int h, Graphics2D g2) {
BufferedImage srcImg =
new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D imageG2 = srcImg.createGraphics();

//设置白底黑字
imageG2.setBackground(Color.WHITE);
imageG2.clearRect(0, 0, w, h);
imageG2.setColor(Color.BLACK);

String text = "标题:订货单位";
Font font = new Font("宋体", Font.BOLD, 28);
FontRenderContext frc = g2.getFontRenderContext();
TextLayout tl = new TextLayout(text, font, frc);
tl.draw(imageG2, 50, 50);

//文字的宽度将压缩一半显示
g2.drawImage(srcImg, 0, 0, srcImg.getWidth()/2, srcImg.getHeight(), null);
//文字正常显示
g2.drawImage(srcImg, 0, srcImg.getHeight(), srcImg.getWidth(), srcImg.getHeight(), null);
}


public static void main(String s[]) {
JFrame f = new JFrame();
f.setSize(400, 500);
f.getContentPane().add(new ColorConvert());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}


2.空心字
public class TestPanel extends JPanel {

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
tt(g);
}

private void tt(Graphics g) {
Graphics2D g2 = (Graphics2D)g;

java.awt.font.FontRenderContext frc = g2.getFontRenderContext();
java.awt.Font f = new java.awt.Font("宋体", java.awt.Font.PLAIN, 80);
java.awt.font.TextLayout tl = new java.awt.font.TextLayout("i序号_i", f, frc);
AffineTransform translateInstance = AffineTransform.getTranslateInstance(1, 200);
java.awt.Shape sha = tl.getOutline(translateInstance);
g2.setColor(java.awt.Color.BLUE);
g2.draw(sha);
//g2.fill(sha);//如果去掉这行就是空心字了
}

public static void main(String[] args) {
JFrame f = new JFrame();
f.getContentPane().add(new TestPanel());
f.setSize(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值