日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺析SwingImage的轉換

我覺得這種Swing Image轉換當然可能很少會用到,不過了解一下也是沒有壞處的。

為武夷山等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及武夷山網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站設計、網(wǎng)站建設、外貿網(wǎng)站建設、武夷山網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

例如,我們想做一個類型于Windows的explorer的一個文件樹來顯示文件,希望每個樹結點的圖標和在explorer里看到的一樣。到現(xiàn)在為此我不知道怎么用SWT去得到每個文件或文件夾的顯示圖標。因此我要借助SWing來完成。

首先,我們需要得到一個對應于文件(夾)圖標的Swing Image對象。如下:

 
 
 
  1. java.awt.Image icon = ShellFolder.getShellFolder(file).getIcon(true);   

接下來就是要從這個Swing Image開始做轉換。顯示不能直接把這個icon轉換成SWT的一個Image對象。所以我們需要先把這個icon變成字節(jié)流,假如我們希望轉換后圖標的大小是16*16。那么,可以如下做:

 
 
 
  1. int width = 16;    
  2. int height = 16;    
  3. BufferedImage b = new BufferedImage(width, height,    
  4. BufferedImage.TYPE_INT_RGB);    
  5. Graphics graphics = b.getGraphics();    
  6. graphics.drawImage(icon, 0, 0, width, height, null);    
  7. ByteArrayOutputStream baos = new ByteArrayOutputStream();    
  8. ImageIO.write(b, "png", baos);   

先轉成一個BufferedImage,然后把這個BufferedImage存入一個字符數(shù)組轉出流。最后只要從這個輸出流中得到字節(jié)數(shù)組就可以:

 
 
 
  1. byte[] by = baos.toByteArray();  

這樣就得到了這個Swing圖標對應的一個字節(jié)數(shù)組。

要從一個字節(jié)數(shù)組得到對應的一個SWT的圖標就比較簡單了,我們可以先用這個數(shù)組構造出一個ImageData對象,如下:

 
 
 
  1. ImageData data = new ImageData(new ByteArrayInputStream(by));    
  2. for (int i = 0; i < width; i++) {    
  3. for (int j = 0; j < height; j++) {    
  4. if (data.getPixel(i, j) == 0) {    
  5. data.setPixel(i, j, 0xffffff);    
  6. }    
  7. }    
  8. }   

這里有一點要注意:在沒有圖元點的地方,默認會顯示一個黑點,我把顯示黑點的地方都用一個白點做了替換。最后,根據(jù)這個data構造出對應的Image,如下:

 
 
 
  1. image = new Image(Display.getDefault(), data); 

分享名稱:淺析SwingImage的轉換
本文路徑:http://m.5511xx.com/article/cdiiphe.html