2013-03-05 20 views
5

मैं अपने आर्कजीआईएस मानचित्र ऑब्जेक्ट की एक छवि को ग्राफिक्स परत के साथ निर्यात करना चाहता हूं। मैंने निर्यात के लिए एएसआर की अपनी वेब सेवाओं की कोशिश की है लेकिन वे जटिल ज्यामितीय आकृतियों का समर्थन नहीं कर रहे हैं, इसलिए वे इतने कुशल और स्पष्ट नहीं हैं कि वे Google मानचित्र प्रदाता जैसे स्थानीय परतों का समर्थन नहीं कर रहे हैं। सेवा केवल ArcGISTiledLayer का समर्थन करती है, मैं इसे सभी परतों में चाहता हूं। इसलिए, मैंने अपने मंचों में खोज की लेकिन वे कहते हैं कि वे अगले संस्करण तक स्थानीय परतों का समर्थन नहीं करेंगे।क्या कोई छवि के रूप में सिल्वरलाइट UI तत्व प्राप्त करने का कोई तरीका है?

मैंने कोडप्लेक्स में ImageTool पुस्तकालयों और WritableBitmapEx पुस्तकालयों की कोशिश की है। लेकिन जब मैं एक लिखने योग्य बिटमैप से बाइट [] प्राप्त करने का प्रयास करता हूं, तो मैं हर समय कुछ सुरक्षा कारणों से अपनी पिक्सेल संपत्ति तक नहीं पहुंच सकता। एप्लिकेशन सुरक्षा अपवाद फेंकता है और कहता है कि 'आप इस पिक्सल प्रॉपर्टी तक नहीं पहुंच सकते हैं'।

तो, क्या UIElement नियंत्रण की छवि प्राप्त करने और डिस्क पर सहेजने का कोई तरीका है? या इस सुरक्षा अपवाद के लिए कोई कामकाज है? http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.rendertargetbitmap.aspx

यहां किसी को बचाने के लिए एक उदाहरण है -

उत्तर

5

हाँ छवि उपकरण पुस्तकालय png में यह करने के लिए एक विधि/जेपीजी आदि

http://imagetools.codeplex.com/

इसके अलावा, आप उपयोग कर सकते हैं RenderTargetBitmap है डिस्क पर फ़ाइल। आप इसे एक संवाद

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; 
} 
+0

मैं उपयोग करने के लिए कुछ कोड है एक पीएनजी कोशिश करने के लिए imagetools इसे खोजने के लिए :) – Dreamwalker

+0

मैंने WriteToStream विधि के साथ छवि उपकरण लाइब्रेरी की कोशिश की है, यह काम नहीं करता है। मैं RenderTargetBitmap कक्षा का प्रयास करूंगा। –

+0

डिस्क पर सहेजना SaveFileDialog के साथ किया जाना चाहिए अन्यथा आपको एक अपवाद भालू दिमाग में मिलेगा। अभी भी imagetools कोड – Dreamwalker

संबंधित मुद्दे

 संबंधित मुद्दे