Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# 如何在wpf中进行屏幕捕获?_C#_Wpf_Screenshot - Fatal编程技术网

C# 如何在wpf中进行屏幕捕获?

C# 如何在wpf中进行屏幕捕获?,c#,wpf,screenshot,C#,Wpf,Screenshot,我想简单的点击屏幕短 我从c#windows窗体创建了一个简单的项目 但我不能在wpf上 以下是windows窗体代码: using System.Drawing; using System.Windows.Forms; private void short_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(1000); System.Window

我想简单的点击屏幕短

我从c#windows窗体创建了一个简单的项目

但我不能在wpf上

以下是windows窗体代码:

using System.Drawing;
using System.Windows.Forms;

 private void short_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(1000);
            System.Windows.Forms.SendKeys.Send("{PRTSC}");
            Image img = Clipboard.GetImage();
            pictureBox1.Image = img;
            img.Save("D:\\myimg.jpg");  //Its save only one picture 
        }
但它只保存了一张图片

wpf的问题:

1:如何在单击时捕获屏幕

2:如何一次保存多张图片

注意:

很简单

任何人都请帮助我


我使用以下代码创建屏幕截图并在wpf图像控件上显示它。您应该能够将位图保存为jpeg或其他格式

var bitmap = new Bitmap(Screen.AllScreens[SelectedScreen.Index].Bounds.Width, Screen.AllScreens[SelectedScreen.Index].Bounds.Height);


var graphics = Graphics.FromImage(bitmap);

graphics.CopyFromScreen(Screen.AllScreens[SelectedScreen.Index].Bounds.Left, Screen.AllScreens[SelectedScreen.Index].Bounds.Top, 0, 0, bitmap.Size);

this.Dispatcher.Invoke(() => this.PreviewImage.Source = this.ConvertBitmapToBitmapImage(bitmap));

我使用以下代码创建一个屏幕截图,并将其显示在wpf图像控件上。您应该能够将位图保存为jpeg或其他格式

var bitmap = new Bitmap(Screen.AllScreens[SelectedScreen.Index].Bounds.Width, Screen.AllScreens[SelectedScreen.Index].Bounds.Height);


var graphics = Graphics.FromImage(bitmap);

graphics.CopyFromScreen(Screen.AllScreens[SelectedScreen.Index].Bounds.Left, Screen.AllScreens[SelectedScreen.Index].Bounds.Top, 0, 0, bitmap.Size);

this.Dispatcher.Invoke(() => this.PreviewImage.Source = this.ConvertBitmapToBitmapImage(bitmap));
XAML:


XAML:



不清楚您所说的“多画面”。是gif吗?或者每个窗口的截图?或者您每次都想使用不同的文件名(然后只需将
DateTime.Now.ToString()
添加到文件名)?要获得打印屏幕:@Sinatr我不明白您的解决方案,请给我一个示例项目,因为我也不明白您的问题;)@Sinatr我想像windows默认屏幕截图一样保存多屏幕截图不清楚您所说的“多画面”。是gif吗?或者每个窗口的截图?或者您每次都想使用不同的文件名(然后只需将
DateTime.Now.ToString()
添加到文件名)?要获得打印屏幕:@Sinatr我不明白您的解决方案,请给我一个示例项目,因为我也不明白您的问题;)@Sinatr我想像windows默认屏幕一样保存多屏幕短屏幕short@unKerativ它将保存在哪里?嘿,这都是错误@不知道它将保存在哪里?嘿,这都是错误!嘿,这是错误:>Format32BPPargHey这是错误:>Format32bppArgb
<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication1"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>

    </Grid.RowDefinitions>
    <Button Grid.Row="1" Height="10" Click="ButtonBase_OnClick"></Button>
    <Image Grid.Row="0" x:Name="ImageControl"></Image>
</Grid>