参考资料中ImageSource的System.Drawing.Image

时间:2014-01-28 05:47:00

标签: c# wpf resourcedictionary

我的问题与此问题非常相似:wpf image resources and changing image in wpf control at runtime,但稍有不同。

这是我的ResourceDictionary.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ImageSource x:Key="DisconnectedIcon">Images/disconnect.png</ImageSource>
<ImageSource x:Key="Synced">Images/tick.png</ImageSource>
<ImageSource x:Key="NotSynced">Images/x.png</ImageSource>

对于后面的C#代码,我可以使用以下内容从资源加载ImageSource。其中,我能够看到元数据和图像名称,但无法弄清楚如何将它放入System.Drawings.Image。

var imageSource = (ImageSource)Application.Current.FindResource("Synced");

System.Drawing.Image img = Image.FromFile(???)

我尝试将其转换为System.Drawing.Image的原因是将其发送到打印机。

谢谢!

1 个答案:

答案 0 :(得分:-1)

在WPF中,每个UI元素都扩展了Visual Class 在WPF中提供渲染支持。还有一个RenderTargetBitmap Class,其Render MethodVisual个对象作为输入参数。因此,您可以将ImageSource设置为Source的{​​{1}}属性,只需将Image呈现为Image图片:

Bitmap

由于这在互联网上有详细记载,我不打算在这里重复整个故事。要查看完整的故事,请参阅Dot NET Tricks网站上的How to Render Bitmap or to Print a Visual in WPF页面,该页面还可以帮助您满足打印要求。