在 WPF 中打开图像
本文关键字:图像 WPF | 更新日期: 2023-09-27 18:30:42
我对WPF,Visual Studio和C#非常陌生。我用java编码(虽然已经有一段时间了),所以很多C#代码看起来有点熟悉。我正在尝试测试此处列出的代码:http://www.c-sharpcorner.com/uploadfile/mahesh/image-viewer-in-wpf/
现在,当我将代码复制到那里使用时,窗口和按钮使用 .xaml 代码显示正常。但是,在后面的代码中,我收到 8 个错误,所有错误都说"名称'xxx'在当前上下文中不存在"。它们是:InitializeComponent、ImageViewer1、FileNameLabel、selectedFileName、RotationList 和 ImageControl。如果下载文件,则 .xaml 文件会有所不同,并且仅使用 BrowseButton_Click 方法。使用这两个文件,我没有收到任何错误,程序运行良好。我只是在寻找一些提示,说明为什么当我使用该链接中列出的 .xaml 和旋转按钮方法时它会给我一个错误。
编辑:修复了"当前上下文中不存在"的"不存在"错误,除了两个"选定的文件名"错误。.xaml 中的某些名称与后面代码中的名称不同。因此,除了这两个错误之外,我还得到了一个错误,上面写着"'WPFImageViewer.MainWindow'不包含'RotationList_SelectionChanged'的定义,也没有扩展方法'RotationList_SelectionChanged'接受'WPFImageViewer.MainWindow'类型的第一个参数(您是否缺少使用指令或程序集引用?)。
下面是 .xaml:
<Window x:Class="WPFImageViewer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="409" Width="574">
<Grid >
<Label Content="Label" Height="32" HorizontalAlignment="Left" Margin="11,10,0,0"
Name="FileNameLabel" VerticalAlignment="Top" Width="393"
Background="LightGray" BorderBrush="Gray" BorderThickness="1"/>
<Button Content="Browse a File" Height="34" HorizontalAlignment="Left" Margin="410,8,0,0"
Name="BrowseButton" VerticalAlignment="Top" Width="119"
Foreground="Maroon" FontSize="16" FontFamily="Georgia" Click="BrowseButton_Click" />
<Image Height="305" HorizontalAlignment="Left" Margin="14,53,0,0"
Name="ImageControl" Stretch="Fill" VerticalAlignment="Top" Width="390" />
<Button Content="Rotate" FontFamily="Georgia" FontSize="12" Foreground="Maroon"
Height="26" HorizontalAlignment="Left" Margin="410,61,0,0"
Name="RotateButton" VerticalAlignment="Top" Width="56" Click="RotateButton_Click" />
<ComboBox Height="30" HorizontalAlignment="Right" Margin="0,57,12,0" Name="RotationList"
VerticalAlignment="Top" Width="68" SelectedIndex="0" SelectionChanged="RotationList_SelectionChanged">
<ComboBoxItem Content="Rotate0" ContentStringFormat="Rotate0" />
<ComboBoxItem Content="Rotate90" ContentStringFormat="Rotate90" />
<ComboBoxItem Content="Rotate180" ContentStringFormat="Rotate180" />
<ComboBoxItem Content="Rotate270" ContentStringFormat="Rotate270" />
</ComboBox>
</Grid>
</Window>
下面是背后的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Forms;
namespace ImageViewer
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
ImageViewer1.Source = new BitmapImage(new Uri("Creek.jpg", UriKind.Relative));
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.InitialDirectory = "c:''";
dlg.Filter = "Image files (*.jpg)|*.jpg|All Files (*.*)|*.*";
dlg.RestoreDirectory = true;
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string selectedFileName = dlg.FileName;
FileNameLabel.Content = selectedFileName;
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(selectedFileName);
bitmap.EndInit();
ImageViewer1.Source = bitmap;
}
}
private void RotateButton_Click(object sender, RoutedEventArgs e)
{
if (selectedFileName.Length > 0)
{
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(selectedFileName);
bitmap.Rotation = (Rotation)Enum.Parse(typeof(Rotation),
RotationList.SelectionBoxItemStringFormat);
bitmap.EndInit();
ImageControl.Source = bitmap;
}
}
}
}
我认为您应该在后台代码中检查命名空间。它应该是WPFImageViewer。喜欢这个
namespace WPFImageViewer
{
public sealed partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
}
// code...
}