欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Flex 畫面快照截圖及顯示實現(xiàn)代碼

 更新時間:2009年10月26日 22:31:51   作者:  
在軟件開發(fā)過程中經(jīng)常會有對畫面進(jìn)行快照截圖的需求,例如把畫面當(dāng)前顯示的狀態(tài)捕捉下來保存成圖片。接下來討論如何在flex中對畫面進(jìn)行截圖,畫面截圖完成后怎樣再顯示到畫面上。
一、對指定畫面進(jìn)行快照、截圖。
在Flex SDK中flash.display包下面有兩個類Bitmap和BitmapData。在flex中可以通過兩個類對圖片進(jìn)行操作。BitmapData類中有一個draw方法這個方法的第一個參數(shù)是進(jìn)行畫面截圖的源對象,這個對象必須實現(xiàn)IBitmapDrawable接口。而DisplayObject類實現(xiàn)了這個接口,DisplayObject是所有可見控件的先祖類,也就意味著所有在flex可以看到的畫面、控件都可以用draw方法來進(jìn)行快照截圖。
具體的代碼如下:
復(fù)制代碼 代碼如下:

private var bmpImage:Bitmap = null;
private function onClick():void
{
//創(chuàng)建一個大小和截圖對象一致的圖片
var bmpData:BitmapData = new BitmapData(source.width,source.height);
//進(jìn)行快照截圖,其中第二個參數(shù)Matrix是對圖片進(jìn)行變換用的,例如旋轉(zhuǎn)縮放等。
//如果圖片不需要變換可以用new Matrix()或者null都可以。
bmpData.draw(source,new Matrix());
//創(chuàng)建Bitmap對象
bmpImage = new Bitmap(bmpData);
}

BitmapData對象不能直接顯示到畫面上,所以需要把BitmapData對象封裝到Bitmap中,按下截圖按鈕后,Panel的快照就生成了,保存到了Bitmap對象中。
效果圖片:
效果圖A
二、將捕獲到的截屏圖片顯示到畫面上。
接下來就是把Bitmap對象顯示到畫面上,這里需要借助UIComponent類。由于直接把Bitmap對象加到Canvas等容器中,運行時會出錯,因為容器中添加的子對象必須是UIComponent的子類,而Bitmap不是,所以需要UIComponent類來封裝一層。然后把UIComponent對象加入到Canvas容器中,這樣圖片就顯示出來了。
代碼如下所示:
復(fù)制代碼 代碼如下:

private function onShow():void
{
//創(chuàng)建一個UIComponent對象
var uic:UIComponent = new UIComponent();
//將Bitmap對象加入到UIComponent對象中
uic.addChild(bmpImage);
//將UIComponent對象加入Canvas中
showImage.addChild(uic);
}

先按下截圖按鈕進(jìn)行截圖操作,然后按下顯示按鈕把截圖顯示到Canvas中。效果如圖所示。
效果圖B
三、以下是這個程序的完整代碼:
復(fù)制代碼 代碼如下:

<?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)建一個大小和截圖對象一致的圖片
var bmpData:BitmapData = new BitmapData(source.width,source.height);
//進(jìn)行快照截圖,其中第二個參數(shù)Matrix是對圖片進(jìn)行變換用的,例如旋轉(zhuǎn)縮放等。
//如果圖片不需要變換可以用new Matrix()或者null都可以。
bmpData.draw(source,new Matrix());
//創(chuàng)建Bitmap對象
bmpImage = new Bitmap(bmpData);
}
private function onShow():void
{
//創(chuàng)建一個UIComponent對象
var uic:UIComponent = new UIComponent();
//將Bitmap對象加入到UIComponent對象中
uic.addChild(bmpImage);
//將UIComponent對象加入Canvas中
showImage.addChild(uic);
}
]]-->
</mx:Script>
</mx:Application>

四、總結(jié)。
雖然可以用Bitmap和BitmapData類進(jìn)行截圖和現(xiàn)實,但是flex不能直接讀寫文件。圖片的保存還需要后臺程序的配合來完成。
  • Flex 非常實用的資料

    Flex 非常實用的資料

    找資料的時候 看到一篇文章很實用 對新手的基本問題都可以找到,方便查找答案的時間
    2009-02-02
  • Flex 讀取xml文件的方法

    Flex 讀取xml文件的方法

    Flex 讀取xml文件的多種方法小結(jié),大家可以根據(jù)需要自己選擇。
    2009-08-08
  • Flex 隱藏組件的屬性

    Flex 隱藏組件的屬性

    Flex中我們有時需要隱藏組件,但又要去不占用原來的位置,可以參考下面的方法。
    2009-06-06
  • Flex Gumbo中通過baseColor樣式 設(shè)置FxHScrollBar背景顏色

    Flex Gumbo中通過baseColor樣式 設(shè)置FxHScrollBar背景顏色

    Gumbo中通過baseColor樣式 設(shè)置FxHScrollBar背景顏色的實現(xiàn)代碼。需要的朋友可以參考下。
    2009-08-08
  • Flex 編程注意之Flex Complier參數(shù)

    Flex 編程注意之Flex Complier參數(shù)

    由于上一篇文章《Flex編程注意之Namespace的用法》引出了Flex編譯時自帶的兩個參數(shù):-namespace -include-namespace,正好想到可以寫一篇關(guān)于Flex Complier時的一些自定義參數(shù)。
    2009-07-07
  • Flex Bindable 的用法

    Flex Bindable 的用法

    什么是元數(shù)據(jù)(metadata):[Bindable]大概又是Flex用得最多的元數(shù)據(jù)了。
    2009-10-10
  • Flex 如何得到itemRenderer里面的內(nèi)容

    Flex 如何得到itemRenderer里面的內(nèi)容

    itemRenderer里面的內(nèi)容 獲取技巧。
    2009-07-07
  • Flex與.NET互操作(十一):FluorineFx.Net的及時通信應(yīng)用(Remote Procedure Call)(二)

    Flex與.NET互操作(十一):FluorineFx.Net的及時通信應(yīng)用(Remote Procedure Call

    FluorineFx.NET提供了完善的RPC(Remote Procedure Call)功能,無論是通過Flash還是Flex開發(fā)的客戶端應(yīng)用(.swf)都可以非常簡單方便的采用RPC的方式調(diào)用.NET的服務(wù)器端方法
    2009-06-06
  • Flash Event寫法

    Flash Event寫法

    flash下event事件驅(qū)動方法
    2008-05-05
  • 最新評論