我想知道如何在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)
但它仍然无法运作......
(对不起我的英语水平,我通常用法语工作)
答案 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
事件)。