2011-12-13 12 views
5

मेरे पास System.Drawing.Image ऑब्जेक्ट में छवि है और मुझे एक छविब्रश ऑब्जेक्ट बनाने की आवश्यकता है (उदाहरण के लिए WPF में आयत की संपत्ति भरने के लिए उपयोग किया जाता है)। मुझे लगता है कि ऐसा करने का एक तरीका होना चाहिए, लेकिन मुझे कोई नहीं मिल रहा है।WPF में System.Drawing.Image से ImageBrush कैसे बनाएं?

उत्तर

13
 var image = System.Drawing.Image.FromFile("..."); // or wherever it comes from 
     var bitmap = new System.Drawing.Bitmap(image); 
     var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), 
                      IntPtr.Zero, 
                      Int32Rect.Empty, 
                      BitmapSizeOptions.FromEmptyOptions() 
      ); 
     bitmap.Dispose(); 
     var brush = new ImageBrush(bitmapSource);   

यह समाधान, हालांकि, हैंडल की स्मृति मुक्त नहीं करता है। कैसे दूर करने के लिए पर जानकारी के लिए स्मृति रिसाव WPF CreateBitmapSourceFromHBitmap() memory leak

2
<Rectangle x:Name="RectangleName"      
       StrokeThickness="1" 
       HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" 
       Width="200" 
       Height="300" 
       Stroke="Black" > 
     <Rectangle.Fill> 

       <ImageBrush ImageSource="{Binding SelectedComponentsImage}" x:Name="ComponentVisualBrush" ViewboxUnits="Absolute" 
       Viewbox="0,0,300,300" ViewportUnits="RelativeToBoundingBox" Stretch="UniformToFill" Viewport="0,0,1,1" 
       RenderOptions.EdgeMode="Aliased" /> 

     </Rectangle.Fill> 
</Rectangle> 

देखना यह viewmodel बाइंडिंग के साथ है। आप एक छवि यूरी के साथ बाइंडिंग को प्रतिस्थापित कर सकते हैं।

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