海水正藍(lán)

          面朝大海,春暖花開
          posts - 145, comments - 29, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          最近在給客戶做項(xiàng)目的時(shí)候客戶提出要求要給圖片加水印, 在添加文字水印時(shí),讓用戶自定義自體,當(dāng)用戶在選擇字體時(shí),如果勾選了刪除線和下劃線選項(xiàng),而java.awt.Font不支持下劃線和刪除線的style, 這怎么辦呢?

          字體設(shè)置

          還好,Java提供了 AttributedString 類, 通過

          attributedString.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);

          attributedString.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);

          即可給文字添加刪除線和下劃線,再通過

          graphics2D.drawString(as.getIterator(), x, y);

          就可以顯示下劃線和刪除線的效果了。

          刪除線下劃線效果

          Java代碼
          1. import java.awt.Font;  
          2. import java.awt.Graphics;  
          3. import java.awt.Graphics2D;  
          4. import java.awt.RenderingHints;  
          5. import java.awt.font.TextAttribute;  
          6. import java.text.AttributedString;  
          7.   
          8. import javax.swing.JFrame;  
          9. import javax.swing.JPanel;  
          10.   
          11. public class IteratorUnderStrike extends JPanel{  
          12.   public void paint(Graphics g) {  
          13.     Graphics2D g2 = (Graphics2D) g;  
          14.   
          15.     String s = "/"www.java2s.com/" is great.";  
          16.   
          17.     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,  
          18.         RenderingHints.VALUE_ANTIALIAS_ON);  
          19.     Font plainFont = new Font("Times New Roman", Font.PLAIN, 24);  
          20.   
          21.     AttributedString as = new AttributedString(s);  
          22.     as.addAttribute(TextAttribute.FONT, plainFont);  
          23.     as.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, 1, 15);  
          24.     as.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON, 18, 25);  
          25.   
          26.     g2.drawString(as.getIterator(), 24, 70);  
          27.   }  
          28.   
          29.   public static void main(String[] args) {  
          30.     JFrame f = new JFrame();  
          31.     f.getContentPane().add(new IteratorUnderStrike());  
          32.     f.setSize(850, 250);  
          33.     f.show();  
          34.   }  



          http://yanghuidang.iteye.com/blog/1203582

          評論

          # re: 【轉(zhuǎn)】java AWT 給 Font 添加刪除線和下劃線(2D繪圖)  回復(fù)  更多評論   

          2016-03-04 13:37 by
          輔導(dǎo)輔導(dǎo)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 封丘县| 讷河市| 独山县| 石棉县| 伊川县| 和平县| 资讯 | 镇江市| 辽阳市| 湘乡市| 姜堰市| 厦门市| 金门县| 镇江市| 汾阳市| 沛县| 大埔区| 贵德县| 宜兰市| 城口县| 沅江市| 枣庄市| 台安县| 博客| 老河口市| 宜兰县| 洞口县| 中西区| 应用必备| 神农架林区| 嘉兴市| 陕西省| 瑞金市| 苍梧县| 金昌市| 延庆县| 商都县| 泰顺县| 金寨县| 垦利县| 兰溪市|