最近在給客戶做項(xiàng)目的時(shí)候客戶提出要求要給圖片加水印, 在添加文字水印時(shí),讓用戶自定義自體,當(dāng)用戶在選擇字體時(shí),如果勾選了刪除線和下劃線選項(xiàng),而java.awt.Font不支持下劃線和刪除線的style, 這怎么辦呢?
還好,Java提供了 AttributedString 類, 通過
attributedString.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);
attributedString.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
即可給文字添加刪除線和下劃線,再通過
graphics2D.drawString(as.getIterator(), x, y);
就可以顯示下劃線和刪除線的效果了。
Java代碼
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.RenderingHints;
- import java.awt.font.TextAttribute;
- import java.text.AttributedString;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- public class IteratorUnderStrike extends JPanel{
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D) g;
- String s = "/"www.java2s.com/" is great.";
- g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- Font plainFont = new Font("Times New Roman", Font.PLAIN, 24);
- AttributedString as = new AttributedString(s);
- as.addAttribute(TextAttribute.FONT, plainFont);
- as.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, 1, 15);
- as.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON, 18, 25);
- g2.drawString(as.getIterator(), 24, 70);
- }
- public static void main(String[] args) {
- JFrame f = new JFrame();
- f.getContentPane().add(new IteratorUnderStrike());
- f.setSize(850, 250);
- f.show();
- }
- }
http://yanghuidang.iteye.com/blog/1203582