在 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;
            }
        }
    }
}

在 WPF 中打开图像

我认为您应该在后台代码中检查命名空间。它应该是WPFImageViewer。喜欢这个

namespace WPFImageViewer
{ 
    public sealed partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
    // code...
}