Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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# XAML照片效果_C#_.net_Wpf_Xaml_Effects - Fatal编程技术网

C# XAML照片效果

C# XAML照片效果,c#,.net,wpf,xaml,effects,C#,.net,Wpf,Xaml,Effects,所以需要说的是,我对WPF和XAML是完全陌生的。 我的项目是制作一个程序,当你插入图片时,你必须给它添加一些效果。我对WPF不太了解,所以我需要你的帮助。 我需要你们的一个效果,这样我就可以有一个例子来制作其他效果。在内存中或在这样的页面上创建图像: <Image Source="sourceimage.png" Name="myImage"> <Image.Effect> <BlurEffect /> </Image.

所以需要说的是,我对WPF和XAML是完全陌生的。 我的项目是制作一个程序,当你插入图片时,你必须给它添加一些效果。我对WPF不太了解,所以我需要你的帮助。
我需要你们的一个效果,这样我就可以有一个例子来制作其他效果。

在内存中或在这样的页面上创建图像:

<Image Source="sourceimage.png" Name="myImage">
    <Image.Effect>
        <BlurEffect />
    </Image.Effect>
</Image>
最后,使用类似PNG编码器的东西将其保存到文件中:

var bitmap = CaptureScreen(this.myImage, 96, 96);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmap));
using (var s = File.Create(@"filename.png"))
    encoder.Save(s);
请记住,如果要保存已添加到屏幕窗口的图像,则必须在加载的处理程序或其他程序中执行所有这些操作,如果在初始化所有框架元素之前尝试执行这些操作,则图像将为空白


现在我已经说了所有这些,让我说我认为使用WPF来做这样的事情是一个真正的、非常糟糕的主意。WPF着色器效果是出了名的片状,它所依赖的许多硬件驱动程序也是如此,使用适当的图像处理库会更好。

您是否尝试过
图像.Effect
,而不是
按钮.Effect
?你自己先试试这样明显的效果,如果有问题请回来。我发现3种效果的代码对我的任务来说已经足够好了,但我不知道如何在XAML中制作,当按下按钮对图像进行更改时,比如WPF上的this->。请帮我编辑你的标题。请看“”,其中的共识是“不,他们不应该”。谢谢你的回答,我还有一个问题。我如何使模糊效果在按下按钮时出现在照片上。只需执行类似“this.myImage.effect=new BlurEffect();”的操作即可在您的视图代码中。我理解您所说的,但它对于一个非常小的项目来说已经足够好了。我面临的唯一问题是PNG编码器没有检测到文件。当前上下文中不存在Create和sayd文件。我将PNG编码器的代码放在一个按钮下,因为我只想在按下“保存”按钮时保存它。你能帮我吗?我使用(var s=System.IO.File.Create)完成此操作后消除了错误(@“filename.png”))encoder.Save;但我仍然不知道该文件保存在何处,或者是否已保存,因为我没有收到任何错误
var bitmap = CaptureScreen(this.myImage, 96, 96);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmap));
using (var s = File.Create(@"filename.png"))
    encoder.Save(s);