海水正藍

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

          最近在給客戶做項目的時候客戶提出要求要給圖片加水印, 在添加文字水印時,讓用戶自定義自體,當用戶在選擇字體時,如果勾選了刪除線和下劃線選項,而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代碼
          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: 【轉】java AWT 給 Font 添加刪除線和下劃線(2D繪圖)  回復  更多評論   

          2016-03-04 13:37 by
          輔導輔導

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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 云和县| 庐江县| 新沂市| 区。| 高州市| 仪征市| 麦盖提县| 安宁市| 恩平市| 星座| 兴义市| 临漳县| 铅山县| 招远市| 巩义市| 万山特区| 邹平县| 盐池县| 阜新| 仙游县| 五河县| 扬中市| 霍林郭勒市| 阿荣旗| 昌图县| 古交市| 廊坊市| 长春市| 泽库县| 阳春市| 福鼎市| 东乡县| 定襄县| 贵州省| 高清| 崇义县| 游戏| 绥芬河市| 大名县| 莒南县| 六枝特区|