Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#单击图像显示新源后短暂延迟_C#_Wpf - Fatal编程技术网

C#单击图像显示新源后短暂延迟

C#单击图像显示新源后短暂延迟,c#,wpf,C#,Wpf,我有一个Windows.Controls.Image,单击它时需要更改其来源,并在导航到新页面之前显示x毫秒。在更改源代码后,我尝试使用Thread.Sleep(200),但无论我如何尝试重新绘制,都不会显示更改的源代码,然后当睡眠结束时,它会立即更改页面。有人知道我怎么做吗?干杯 private void ButtonClicked(object sender, MouseButtonEventArgs e) { Image button = (Image)sende

我有一个Windows.Controls.Image,单击它时需要更改其来源,并在导航到新页面之前显示x毫秒。在更改源代码后,我尝试使用Thread.Sleep(200),但无论我如何尝试重新绘制,都不会显示更改的源代码,然后当睡眠结束时,它会立即更改页面。有人知道我怎么做吗?干杯

private void ButtonClicked(object sender, MouseButtonEventArgs e)
    {
         Image button = (Image)sender;
         buttons[button.Name].Source = ImageResizer.ResizeImage(System.Drawing.Image.FromFile(@"D:\buttons\" + button.Name + ".png"), buttonSize);
         NavigationService.Navigate(new UpgradeQuiz());
    }

您可以异步等待:

await Task.Delay(2000);
但是您应该使处理程序
异步

private async void ButtonClicked(object sender, MouseButtonEventArgs e) // async after private
{
     Image button = (Image)sender;
     buttons[button.Name].Source = ImageResizer.ResizeImage(System.Drawing.Image.FromFile(@"D:\buttons\" + button.Name + ".png"), buttonSize);
     await Task.Delay(2000);
     NavigationService.Navigate(new UpgradeQuiz());
}

您可以使用执行导航调用(并停止计时器)的Tick处理程序启动Dispatcher。出于好奇,为什么您要在WPF应用程序中使用
System.Drawing.Image.FromFile
(来自WinForms),而不是直接从本地文件URI加载WPF BitmapImage?许多年前我只做了非常简短的c#编码,现在已经忘记了大部分内容。我正在做的很多事情都是在网络的帮助下学习的。我的ImageResizer.ResizeImage函数接受System.Drawing.Image,这就是我使用它的原因。如果您感兴趣,代码就在这里:随着我了解的更多,我将回到最佳实践中的重构。您通常不会在WPF应用程序中使用WinForms类。在没有查看ResizeImage方法的情况下,我建议将其重写为仅使用
System.Windows.Media.Imaging
中的类。我确实尝试了WPF来调整大小,但我需要使用双三次方来获得所需的图像质量。我找不到如何使用WPF进行双三次调整大小。