WPF效果第二百零六篇之快速黑白灰效果

一大早就看到群友讨论怎么快速让界面黑白灰效果,这不突然想起来N年前咱简单通过ShaderEffects调节过饱和度、对比度、亮度;今天再次玩耍一下;来看看最终实现的效果:d5a88e6043cce80a4712b5ec70cb8e66.gif1、核心代码:

sampler2D implicitInput : register(s0);
float factor : register(c0);
float4 main(float2 uv : TEXCOORD) : COLOR
{float4 color = tex2D(implicitInput, uv);float gray = color.r * 0.3 + color.g * 0.59 + color.b *0.11;  float4 result;    result.r = (color.r - gray) * factor + gray;result.g = (color.g - gray) * factor + gray;result.b = (color.b - gray) * factor + gray;result.a = color.a;return result;
}

2、在Shazzam中编译生成cs和ps文件:

b47bef0b1264798c6dd365f858d501d5.png3、来看看cs文件:

public class GrayscaleEffectEffect : ShaderEffect{public static readonly DependencyProperty InputProperty = ShaderEffect.RegisterPixelShaderSamplerProperty("Input", typeof(GrayscaleEffectEffect), 0);public static readonly DependencyProperty FactorProperty = DependencyProperty.Register("Factor", typeof(double), typeof(GrayscaleEffectEffect), new UIPropertyMetadata(((double)(0D)), PixelShaderConstantCallback(0)));public GrayscaleEffectEffect(){PixelShader pixelShader = new PixelShader();pixelShader.UriSource = new Uri("/MapDemo;component/ShaderEffects/GrayscaleEffectEffect.ps", UriKind.Relative);this.PixelShader = pixelShader;this.UpdateShaderValue(InputProperty);this.UpdateShaderValue(FactorProperty);}public Brush Input{get{return ((Brush)(this.GetValue(InputProperty)));}set{this.SetValue(InputProperty, value);}}public double Factor{get{return ((double)(this.GetValue(FactorProperty)));}set{this.SetValue(FactorProperty, value);}}}

4、前台调用就很简单

<Grid Grid.Row="1"><Grid.Background><ImageBrush ImageSource="Images/Back.jpg" Stretch="Fill"/></Grid.Background><Grid.Effect><ShaderEffects:GrayscaleEffectEffect Factor="{Binding ElementName=BlackTbtn,Path=IsChecked,Converter={StaticResource ToggleButtonIsCheckedToGrayscaleEffectEffectConverter}}"/></Grid.Effect>
</Grid>

5、最后来个参考

http://bursjootech.blogspot.com/2008/06/grayscale-effect-pixel-shader-effect-in.html

最终简单的效果先这样吧2f2a9e67c90d25342d63cc45c86324d2.png;以后有时间的话,可以再去摸索一下更复杂的效果9d075d890e5f740afc7983eeb530998b.png;编程不息、Bug不止、无Bug、无生活7dbb35b934079f32f51656b84f4fc4b0.png;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

极大似然估计与贝叶斯定理

文章转载自&#xff1a;https://blog.csdn.net/zengxiantao1994/article/details/72787849 极大似然估计-形象解释看这篇文章&#xff1a;https://www.zhihu.com/question/24124998 贝叶斯定理-形象解释看这篇文章&#xff1a;https://www.zhihu.com/question/19725590/answer/…

艾媒:第三方应用商店形成BAT3争霸格局

iiMedia Research(艾媒咨询)近日发布的《2016Q2中国移动应用商店市场监测报告》&#xff0c;报告显示&#xff0c;2016年第二季度&#xff0c;第三方移动应用商店用户增长放缓&#xff0c;用户规模逐渐饱和。同时&#xff0c;随着豌豆荚宣布并入阿里移动事业群&#xff0c;中国…

layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知

layui 启用禁用iPhone/iPad: Not interested in Apple Pay, and tired of seeing notifications about it? You can disable them, but the option is hidden. iPhone / iPad&#xff1a;对Apple Pay不感兴趣&#xff0c;又厌倦了看到有关它的通知&#xff1f; 您可以禁用它们…

数字孪生项目实战,WPF与Unity结合开发之路(一)

数字孪生项目实战&#xff0c;WPF与Unity结合开发之路&#xff08;一&#xff09;数字孪生项目实战&#xff0c;WPF与Unity结合开发之路&#xff08;一&#xff09;作 者&#xff1a;水娃嗨大家好&#xff0c;我是一名骨灰级的WPF开发者&#xff0c;我叫水娃。这次主要是向大…

idou老师教你学Istio06: 如何用istio实现流量迁移

流量迁移是流量管理的一个重要功能。istio提供的流量管理功能将流量从基础设施扩展中解耦&#xff0c;支持动态请求路由&#xff0c;故障注入、超时重试、熔断和流量迁移等。流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移至另一个版本&#xff0c;如在新旧版本之间进…

用最少的代码,写一个完整MES项目(.NET6+WPF)

工业4.0时代&#xff0c;智能智造MES系统大行其道&#xff0c;然而基于.NET跨平台的罕见&#xff01;这里有一套《.NET6WPF企业级MES实战》教程&#xff0c;基于.NET6跨平台开发&#xff0c;实现了MES多核心功能&#xff0c;尤其是开发框架完整&#xff0c;非常适合复用。这里分…

django18:auth模块

Auth模块 执行数据库迁移命令后&#xff0c;自动生产多个表。 django_session auth_user 直接访问admin路由&#xff0c;需要输入用户名和密码&#xff0c;就是参考auth_user表 管理员用户才能进入 创建超级用户 createsuperuser from django.contrib import auth1.校验用…

hulu dpp_什么是直播电视的Hulu,它可以代替您的有线电视订阅吗?

hulu dppStreaming cable replacements are becoming a much more appealing option for cable cutters across the board, with more choices available than ever before. Hulu’s Live TV option is a relative newcomer to the scene, but is it worth it? 对于全系列的电…

suse linux ssh远程无法访问问题

当正常安装完Suse Linux Enterprise Server 11 sp1 时&#xff0c;无法通过SecureCRT或者PuTTY之类的终端程序进行连接。 折腾了一下&#xff0c;发现问题所在&#xff1a; 1、 需要关闭防火墙&#xff0c;如下图在YAST里可以关闭&#xff0c;也可以使用下面命令行的方式&…

Jade —— 源于 Node.js 的 HTML 模板引擎

2013-12-11 发布Jade —— 源于 Node.js 的 HTML 模板引擎 开源项目介绍 web 模板引擎 node.js jade 207.8k 次阅读 读完需要 69 分钟54Jade 是一个高性能的模板引擎&#xff0c;它深受 Haml 影响&#xff0c;它是用 JavaScript 实现的&#xff0c;并且可以供 Node…

诈骗者如何伪造电子邮件地址,以及如何分辨

Consider this a public service announcement: Scammers can forge email addresses. Your email program may say a message is from a certain email address, but it may be from another address entirely. 考虑这是一项公共服务公告&#xff1a;诈骗者可以伪造电子邮件地…

如何对整个 WPF 应用程序进行灰度

如何对整个 WPF 应用程序进行灰度控件名&#xff1a;GrayscaleEffect作 者&#xff1a;WPFDevelopersOrg - 驚鏵原文链接[1]&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers 简易源码[2]框架使用.NET40&#xff1b;Visual Studio 2019;如果要实现灰度第一反是…

django19:项目开发流程

参考&#xff1a;https://www.bilibili.com/video/BV1QE41147hU?p831&spm_id_frompageDriver

React Native - FlexBox弹性盒模型

FlexBox布局 1. 什么是FlexBox布局? 弹性盒模型(The Flexible Box Module),又叫FlexBox,意为"弹性布局",旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同屏幕,为盒模型提供最大的灵活性.   Flex布局主要思想是: 让容器有能力让其子项目能够改变其…

java虚拟机读写其他进程的数据

在java中&#xff0c;process类提供了如下3个方法&#xff0c;用于让程序和其他子进程进行通信。 InputStream getErrorStream&#xff08;&#xff09;&#xff1a;获取子进程的错误流。 InputStream getInputStream&#xff08;&#xff09;&#xff1a;获取子进程的输入流。…

release8_如何在Windows 8 Release Preview中将Chrome用作Metro浏览器

release8Windows 8 allows third-party browser to replace Internet Explorer in the Metro environment — except on Windows RT. You can use Google Chrome in Metro today, and Firefox for Metro is on the way. Windows 8允许第三方浏览器在Metro环境中替换Internet Ex…

html jQuery/bootstrap通过网络bootcdn导入连接

网络连接网址 https://www.bootcdn.cn/ <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>title</title><!-- Bootstrap --><link href"https://cdn.bootcdn.net/ajax/libs/twi…

Python深入类和对象

一. 鸭子类型和多态 1.什么是鸭子类型&#xff1a; 在程序设计中&#xff0c;鸭子类型&#xff08;英语&#xff1a;Duck typing&#xff09;是动态类型和某些静态语言的一种对象推断风格。"鸭子类型"像多态一样工作&#xff0c;但是没有继承。“鸭子类型”的语言是这…

linux中/usr下文件权限修改setuid导致的问题

2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu系统中因为一些原因我使用如下命令修改了/usr目录的拥有者权限&#xff1a; chown -R root:root /usr结果直接导致系统无法正常启动&#xff0c;通过跟踪系统启动日志/var/log/syslog找到如下失败原因&#xff1…

[转载]unix环境高级编程备忘:理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID...

转载自http://www.cnblogs.com/stemon/p/5287631.html 一、基本概念 实际用户ID(RUID)&#xff1a;用于标识一个系统中用户是谁&#xff0c;一般是在登录之后&#xff0c;就被唯一的确定&#xff0c;就是登录的用户的uid。 有效用户ID(EUID)&#xff1a;用于系统决定用户对系统…