簡體   English   中英

有什么辦法可以將Silverlight UI元素獲取為圖像?

[英]Is there any way for get Silverlight UI Element as an image?

我想導出帶有圖形層的ArcGIS地圖對象的圖像。 我已經嘗試過使用esri自己的網絡服務進行導出,但是它們效率不高,不清晰,不支持復雜的幾何形狀,也不支持Google地圖提供商等本地圖層。 服務僅支持ArcGISTiledLayer,但我希望在所有圖層中使用它。 因此,我在他們的論壇中進行了搜索,但他們說直到下一個版本,他們才支持本地圖層。

我已經在Codeplex中嘗試過ImageTool庫和WritableBitmapEx庫。 但是,當我嘗試從WritableBitmap獲取byte []時,出於某種安全原因,我一直無法訪問其Pixels屬性。 應用程序引發SecurityException並說“您無法訪問此像素屬性”。

那么,有什么方法可以獲取UIElement控件的圖像並將其保存到磁盤嗎? 還是有針對此安全異常的解決方法?

是的,圖像工具庫提供了將其轉換為png / jpg等的方法。

http://imagetools.codeplex.com/

您也可以使用RenderTargetBitmap- http://msdn.microsoft.com/zh-cn/library/system.windows.media.imaging.rendertargetbitmap.aspx

這是如何將文件保存到磁盤的示例。 你只能從對話框中做到這一點

http://www.silverlightshow.net/items/使用-SaveFileDialog-in-Silverlight-3.aspx

編輯-示例代碼

呼喚

var objImage = new WritableBitmap(MyElement, MyElement.RenderTransform);

var bytData = objImage.ToPng();

擴展方式

using ImageTools.IO.Png;
using ImageTools;

public static byte[] ToPng(this WriteableBitmap Image)
{
    byte[] bytResult;

    using (MemoryStream objPngStream = new MemoryStream())
    {
        PngEncoder objPngEncoder = new PngEncoder();
        objPngEncoder.Encode(Image.ToImage(), objPngStream);
        objPngStream.Seek(0, SeekOrigin.Begin);
        bytResult = objPngStream.ToArray();
        objPngStream.Close();
    }
    return bytResult;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM