簡體   English   中英

如何使用C#從WPF應用程序添加圖像源?

[英]How to add Image Source from WPF Application using c#?

我是WPF應用程序的初學者。 我檢查了各種教程,但是找不到將圖像添加到項目中的選項。 我正在使用Visual Studio2015。在我的.xaml頁面中,它顯示圖像,但是一旦運行程序,它就不顯示圖像。 誰能幫幫我嗎?

Source =“ / WpfApplication1; component / Images / Start.png”

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="438*"/>
            <ColumnDefinition Width="79*"/>
        </Grid.ColumnDefinitions>
        <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="266,114,0,0" VerticalAlignment="Top" Width="81" Height="20"/>
        <Image x:Name="image" HorizontalAlignment="Left" Height="96" Margin="52,71,0,0" VerticalAlignment="Top" Width="111" Source="/WpfApplication1;component/Images/Start.png"/>

    </Grid> </Window>

如果XAML設計器向您顯示該圖像,則很可能在構建/編譯后,該應用程序找不到該圖像。 這是一個非常普遍的問題-設計器和實際應用程序執行的資源查找有些不同。

右鍵單擊該項目,選擇“清理”,稍等一下,然后再次右鍵單擊並選擇“生成”。 完成后,檢查輸出bin \\ debug或bin \\ release目錄,並查看映像是否位於.exe文件旁邊。 如果不是,則返回項目,右鍵單擊項目中的圖像,然后選擇“屬性”,然后在其中選擇BuildAction = CopyToOutput (即“始終”-可能是圖像和類似只讀資源的最佳選擇)。 再次構建項目,現在它應該在.exe文件旁邊可見,並且您的應用程序應該能夠找到它(前提是xaml中的圖像路徑正確)。

如果您在項目中看不到圖像,則可能忘記了添加圖像。 右鍵單擊項目,選擇“添加現有項目”並添加圖像,使其位於項目中。 否則,VisualStudio生成過程不會了解該映像(即使XAML看到了該映像),也不會將其復制到輸出目錄。

我所描述的只是一個選擇。 還有更多可用。 例如,您可以將圖像添加為“嵌入式資源”,以便將其內置到.exe中,而不位於其旁邊。 但是,所有這些選項在細節上都各不相同-具體來說,它們在以下方面有所不同:

  • 如何在項目中添加和配置圖像選項
  • 圖像路徑在XAML中應如何顯示

所以..很容易搞砸。 對於初學者,請專注於一個選項(例如:Image-as-CopyToOutput或Image-as-EmbeddedResource),不要混淆它們。 請仔細閱讀文章,因為通常沒有明確說明他們選擇哪種方式。

編輯:

我只是注意到您提供了代碼。 瞧瞧,您現在在XAML中的映像路徑為:

Source="/WpfApplication1;component/Images/Start.png"

這表明這是一個嵌入式資源。 您可以輕松地看到這是一個特殊路徑: (name-of-dll-or-exe) ; (component) / path-to-file (name-of-dll-or-exe) ; (component) / path-to-file 如果使用這樣的路徑(它們的正式名稱為“ pack-uri”),則應確保將圖像添加到項目中,但不要像我建議的那樣將圖像設置為“ buildaction = CopyToOutput”,但是到“ BuildAction = EmbeddedResource”。 它還不應立即位於項目根目錄中,而應位於“ images /”子文件夾中,並且該子文件夾也應在VS中的項目中可見

如果您想嘗試“ CopyToOutput”方式,則路徑將為:

Source="Images/Start.png"

使用“ CopyToOutput”模式,您實際上不需要關心將圖像添加到項目中的全部操作,只需確保運行.exe之前在.exe文件旁邊有一個“ Images”文件夾即可。 但是,您將必須記住將圖像保留在那里。 如果將文件夾和圖像添加到項目中,並設置buildaction = content,則VS會為您記住它,並將文件夾和圖像放置在.exe旁邊作為構建的一部分。

因此,首先,請確保將此圖像和文件夾添加到項目中。 然后決定要嘗試哪種類型的BuildAction,進行設置,在ImageSource中寫入相關路徑,然后..保持雙手交叉。 初次這樣做可能會很困難,因為有很多方法可以做到這一點(不僅是我提到的那兩個),而且VS / Xaml通常不會報告任何錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM