WPF 封装 图片resource的问题 c#

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 封装 图片resource的问题 c#相关的知识,希望对你有一定的参考价值。

我用wpf做一个小程序,需要用到一张图片。怎么样把这张图片添加到生成的exe文件里去

我已经把图片添加到项目的Resources里了。
是否需要在cs代码里添加引用路径 怎么写
<Image>可以实现~ ~~

但是mediaelement不行啊~ 我就是想mediaelement一开始就能显示一张图片。
不封装资源就可以显示

如图. 

举例: 

在 XAML 档引用 Table.png 图片: 

<Image Source="Resources\\Images\\Table.png"/> 

在 C# 代码中引用 Table.png: 

imgControl.Source = new BitmapImage(new Uri(@"Resources\\images\\Table.png", UriKind.Relative)); 

其中 imgControl 是 Image 的 x:Name. 

上述均是针对图版本是整合到 Project 中的情形. 

关于如何引用 外部(未嵌入到 project) 的图片(或资源), 应参考 Uri 如何设置 资源路径 (file, pack, 等协议), 例如 

Source="pack://application:,,,/Resources/Images/Table.png" 

或者 

Source="pack://siteoforigin:,,,/Resources/Images/Table.png" 

如何获得 MSDN 关于在 WPF 引用的资源位置的详细帮助, 请参阅 MSDN Library Online: 

http://msdn.microsoft.com/zh-cn/library/aa970069.aspx

------------------------------------------------------

"我用wpf做一个小程序,需要用到一张图片。怎么样把这张图片添加到生成的exe文件里去"

你是如何添加资源的?

按如下步骤:

1. 建立你的 Project.

2. 将 图片 添加到 Project 下. (或者新建一个 文件夹, 然后往里添加图片).

3. 引用 (如示例).

无须按以往的方式将图片放到 ResX 文件编译. 只要将图片档直接添加到 Project 中即可. 对于路径, 与 Project 同一文件夹的, 可以接到引用,

如果放到子文件夹的,例如

Project / Resource / test1.jpeg

则 引用路径是 Resource/Test1.jpeg.

-------------------------------

MediaElement 通常是加载 Video, Audio 等媒体档案的 Control.

只是使用图片, Image 控件就可以了.

参考技术A 如果有xaml,直接写Image的Source就行了
<Image Source="/程序集名称;Component/工程路径/xxxx.jpg"/>

如果是cs代码
Image image = new Image();
image.Source= new BitmapSource(....);

WPF C# 媒体元素显示视频的第一张图片

【中文标题】WPF C# 媒体元素显示视频的第一张图片【英文标题】:WPF C# Media Element Show first image of video 【发布时间】:2013-07-22 08:22:41 【问题描述】:

我有一个 .mov 文件,我想使用 WPF 的 MediaElement 播放,当我使用 MediaState.Manual 时,我可以毫无顾虑地播放和暂停,但我想在加载时显示视频的第一个图像或帧它,源代码设置在后面的代码中,我尝试了 MediaElement.ScrubbingEnabled = true 后面的代码和 xaml 但它仍然没有显示。

这是我的代码(xaml 方面):

   <DockPanel Height="386" HorizontalAlignment="Center"  Name="dockPanel1" VerticalAlignment="Top" Width="731">
        <MediaElement Name="McMediaElement" LoadedBehavior="Manual" UnloadedBehavior="Manual" Stretch="Fill" MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded" OpacityMask="#FF040410" Height="386" IsVisibleChanged="SingAlong_IsVisibleChanged" ScrubbingEnabled="True"></MediaElement>
    </DockPanel>

代码隐藏(xaml.cs):

    private void PlayAudio()
    


        McMediaElement.LoadedBehavior = MediaState.Manual;
        McMediaElement.Source = new Uri("../../SingAlong/GrassHopper and Ants/ants2.mov", UriKind.RelativeOrAbsolute);
        McMediaElement.ScrubbingEnabled = true;

       McMediaElement.Play();
    

    private void button1_Click_1(object sender, RoutedEventArgs e) // Play button
    
        if (McMediaElement.Source != null)
        
            McMediaElement.Play();
        
        else
            PlayAudio();
    

    private void button2_Click(object sender, RoutedEventArgs e) // Pause button
    
        McMediaElement.Pause();
    

【问题讨论】:

【参考方案1】:

据我所知,您仅在单击button1 时才加载视频(设置Source),但您希望在此之前显示第一帧。为此,您必须以另一种方法加载视频,最好是在您的PageWindow 加载时。然后您可以执行以下操作:

McMediaElement.ScrubbingEnabled = true;
McMediaElement.Play();
McMediaElement.Pause();

【讨论】:

您也可以删除 Play() 并将 Position 属性设置为时间跨度 0 以实现相同的效果。

以上是关于WPF 封装 图片resource的问题 c#的主要内容,如果未能解决你的问题,请参考以下文章

WPF在DLL中读取Resource的方法

WPF 样式设计之——radioButton

c#WPF XAML对ComboBox.Resources项的RelativeSource引用

wpf 添加动态图片

WPF编程宝典之样式

wpf应用程序设置窗体背景图片