5

グラフィックレイヤーを含むArcGISマップオブジェクトの画像をエクスポートしたいと思います。esri独自のWebサービスをエクスポート用に試しましたが、効率的で明確ではなく、複雑な幾何学的形状をサポートしていません。また、Googleマッププロバイダーなどのローカルレイヤーもサポートしていません。サービスはArcGISTiledLayerのみをサポートします。すべてのレイヤーで必要です。だから、私は彼らのフォーラムで検索しましたが、彼らは次のバージョンまでローカルレイヤーをサポートしないと言っています。

私はcodeplexでImageToolライブラリとWritableBitmapExライブラリを試しました。しかし、WritableBitmapからbyte []を取得しようとすると、セキュリティ上の理由から、常にPixelsプロパティにアクセスできません。アプリケーションはSecurityExceptionをスローし、「このピクセルプロパティにアクセスできません」と言います。

では、UIElementコントロールの画像を取得してディスクに保存する方法はありますか?または、このセキュリティ例外の回避策はありますか?

4

1 に答える 1

5

はい、画像ツールライブラリにはこれをpng/jpgなどに変換するメソッドがあります。

http://imagetools.codeplex.com/

また、RenderTargetBitmapを使用することもできます-http ://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

ファイルをディスクに保存する方法の例を次に示します。あなたはダイアログからのみそれを行うことができます

http://www.silverlightshow.net/items/Using-the-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;
}
于 2013-03-05T13:24:16.900 に答える