五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > Flex畫(huà)面快照截圖及顯示

Flex畫(huà)面快照截圖及顯示

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):939    更新時(shí)間:2009-10-26 09:28   參與評(píng)論

關(guān)鍵詞:Flex,Bitmap,BitmapData,畫(huà)面快照,截圖

 

在軟件開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)有對(duì)畫(huà)面進(jìn)行快照截圖的需求,例如把畫(huà)面當(dāng)前顯示的狀態(tài)捕捉下來(lái)保存成圖片。接下來(lái)討論如何在flex中對(duì)畫(huà)面進(jìn)行截圖,畫(huà)面截圖完成后怎樣再顯示到畫(huà)面上。

一、對(duì)指定畫(huà)面進(jìn)行快照、截圖。

 

Flex SDKflash.display包下面有兩個(gè)類BitmapBitmapData。在flex中可以通過(guò)兩個(gè)類對(duì)圖片進(jìn)行操作。BitmapData類中有一個(gè)draw方法這個(gè)方法的第一個(gè)參數(shù)是進(jìn)行畫(huà)面截圖的源對(duì)象,這個(gè)對(duì)象必須實(shí)現(xiàn)IBitmapDrawable接口。而DisplayObject類實(shí)現(xiàn)了這個(gè)接口,DisplayObject是所有可見(jiàn)控件的先祖類,也就意味著所有在flex可以看到的畫(huà)面、控件都可以用draw方法來(lái)進(jìn)行快照截圖。

具體的代碼如下:

 

private var bmpImage:Bitmap = null;

private function onClick():void

{

    //創(chuàng)建一個(gè)大小和截圖對(duì)象一致的圖片

    var bmpData:BitmapData = new BitmapData(source.width,source.height);

    //進(jìn)行快照截圖,其中第二個(gè)參數(shù)Matrix是對(duì)圖片進(jìn)行變換用的,例如旋轉(zhuǎn)縮放等。

    //如果圖片不需要變換可以用new Matrix()或者null都可以。

    bmpData.draw(source,new Matrix());

    //創(chuàng)建Bitmap對(duì)象

    bmpImage = new Bitmap(bmpData);

}

 

BitmapData對(duì)象不能直接顯示到畫(huà)面上,所以需要把BitmapData對(duì)象封裝到Bitmap中,按下截圖按鈕后,Panel的快照就生成了,保存到了Bitmap對(duì)象中。

效果圖片:

http://p.blog.csdn.net/images/p_blog_csdn_net/To9m/EntryImages/20091026/1.PNG

 

二、將捕獲到的截屏圖片顯示到畫(huà)面上。

 

接下來(lái)就是把Bitmap對(duì)象顯示到畫(huà)面上,這里需要借助UIComponent類。由于直接把Bitmap對(duì)象加到Canvas等容器中,運(yùn)行時(shí)會(huì)出錯(cuò),因?yàn)槿萜髦刑砑拥淖訉?duì)象必須是UIComponent的子類,而Bitmap不是,所以需要UIComponent類來(lái)封裝一層。然后把UIComponent對(duì)象加入到Canvas容器中,這樣圖片就顯示出來(lái)了。

代碼如下所示:

 

 

private function onShow():void

{

    //創(chuàng)建一個(gè)UIComponent對(duì)象

    var uic:UIComponent = new UIComponent();

    //Bitmap對(duì)象加入到UIComponent對(duì)象中

    uic.addChild(bmpImage);

    //UIComponent對(duì)象加入Canvas

    showImage.addChild(uic);

}

 

先按下截圖按鈕進(jìn)行截圖操作,然后按下顯示按鈕把截圖顯示到Canvas中。效果如圖所示。

http://p.blog.csdn.net/images/p_blog_csdn_net/To9m/EntryImages/20091026/2.PNG

 

三、以下是這個(gè)程序的完整代碼:

 

 

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"

    fontFamily="宋體" fontSize="12" width="831" height="448">

    <mx:Panel id="source" x="26" y="77" width="320" height="263" layout="absolute">

       <mx:TextInput x="91" y="51"/>

       <mx:TextInput x="91" y="106"/>

       <mx:Button x="73.5" y="158" label="  "/>

       <mx:Button x="172.5" y="158" label="  "/>

       <mx:Label x="32" y="53" text="用戶名:"/>

       <mx:Label x="32" y="108" text="  碼:"/>

       <mx:Label x="109" y="10" text="用戶登錄" fontWeight="bold"/>

    </mx:Panel>

    <mx:Canvas id="showImage" x="427" y="58" width="347" height="292">

    </mx:Canvas>

    <mx:Label x="124" y="32" text="截圖區(qū)域"/>

    <mx:Label x="562" y="32" text="截圖顯示區(qū)域"/>

    <mx:Button x="147" y="394" label="截圖" click="onClick()"/>

    <mx:Button x="548" y="394" label="顯示" click="onShow()"/>

    <mx:Script>

       <![CDATA[

           import mx.core.UIComponent;

           private var bmpImage:Bitmap = null;

           private function onClick():void

           {

              //創(chuàng)建一個(gè)大小和截圖對(duì)象一致的圖片

              var bmpData:BitmapData = new BitmapData(source.width,source.height);

              //進(jìn)行快照截圖,其中第二個(gè)參數(shù)Matrix是對(duì)圖片進(jìn)行變換用的,例如旋轉(zhuǎn)縮放等。

              //如果圖片不需要變換可以用new Matrix()或者null都可以。

              bmpData.draw(source,new Matrix());

              //創(chuàng)建Bitmap對(duì)象

              bmpImage = new Bitmap(bmpData);

           }

           private function onShow():void

           {

              //創(chuàng)建一個(gè)UIComponent對(duì)象

              var uic:UIComponent = new UIComponent();

              //Bitmap對(duì)象加入到UIComponent對(duì)象中

              uic.addChild(bmpImage);

              //UIComponent對(duì)象加入Canvas

              showImage.addChild(uic);

           }

       ]]>

    </mx:Script>

</mx:Application>

 

四、總結(jié)。

雖然可以用BitmapBitmapData類進(jìn)行截圖和現(xiàn)實(shí),但是flex不能直接讀寫(xiě)文件。圖片的保存還需要后臺(tái)程序的配合來(lái)完成。

如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (939人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)