![](/img/trans.png)
[英]Is there any way to get ServiceStack to deserialize complex types on a Silverlight client?
[英]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.