如何添加图片?

时间:2014-08-05 15:39:10

标签: c# wpf

我想知道如何在c#代码中的wpf应用程序中添加图像?

我想添加此图片:

<Image Name="imgRubanbleu" Source="Objet/rubanbleu.png" Height="19"
Margin="34,252,354,231" RenderTransformOrigin="0.5,0.5" />

在此图片上:

<Image Source="Images/terrain.png" Grid.Row="4" Grid.RowSpan="4" Grid.Column="0" MouseUp="Image_MouseUp_1"/>

当我点击它时......

我试着这样做:

private void Image_MouseUp_1(object sender, MouseButtonEventArgs e)
    {
        Image myImage = new Image();
        myImage.Width = 200;

        // Create source
        BitmapImage myBitmapImage = new BitmapImage();

        // BitmapImage.UriSource must be in a BeginInit/EndInit block
        myBitmapImage.BeginInit();
        myBitmapImage.UriSource = new Uri(@"Objet/rubanbleu.png");
        myBitmapImage.EndInit();
        //set image source
        myImage.Source = myBitmapImage;
    }

http://msdn.microsoft.com/en-us/library/system.windows.controls.image.aspx

但它仍然无法运作......

(对不起我的英语水平,我通常用法语工作)

2 个答案:

答案 0 :(得分:1)

在代码背后,你需要写一个完整的Resource File Pack URI

var uri = new Uri("pack://application:,,,/Objet/rubanbleu.png");

myImage.Source = new BitmapImage(uri); // BeginInit/EndInit not required!

仅当图像文件是Visual Studio项目的一部分(在名为Objet的子文件夹中)且其构建操作设置为Resource时才有效。


也就是说,您的新图像控件myImage必须在某处添加到您的UI中。您似乎希望将其放在现有图像的顶部,因此您应将其添加到同一容器中,例如像这样:

<Grid x:Name="imageGrid">
    <Image ... MouseUp="Image_MouseUp_1"/>
</Grid>

代码:

private void Image_MouseUp_1(object sender, MouseButtonEventArgs e)
{
    var myImage = new Image();
    ...
    imageGrid.Children.Add(myImage);
}

答案 1 :(得分:0)

在WPF中,我们倾向于使用XAML而不是程序代码。以下是Image的示例,当用户将鼠标移到其上时,Source值已更改{<1}}:

<Image Width="16" Height="16" Margin="3,0">
    <Image.Style>
        <Style TargetType="{x:Type Image}">
            <Setter Property="Source" Value="Images\DefaultImage.png"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="Source" Value="Images\MouseOverImage.png"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

现在我知道您想在点击后进行更改,但这只是一个让您入门的示例。您可以在MSDN上的Trigger Class页面上找到更多信息。您可能还希望在MSDN上查看EventTrigger Class页面...这使我们能够在MouseUp中处理事件(例如您选择的Trigger事件)。