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.pswp.cn/news/280558.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280558.shtml
英文地址,請注明出處:http://en.pswp.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;中國…

編譯安裝內核

編譯安裝內核 升級內核到 linux-4.20.3.tar.xz 查看當前內核版本&#xff1a; [rootcentos7 data]#uname -r 3.10.0-862.el7.x86_64獲取內核源代碼包&#xff1a;www.kernel.org linux-4.20.3.tar.xz 實施步驟 1. 安裝編譯所需的工具 gcc ncurses-devel make&#xff08;開發工…

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;我叫水娃。這次主要是向大…

django17:importlib應用中間件代碼思想

轉載&#xff1a;https://www.cnblogs.com/alice-bj/articles/9276880.html 背景 仿django的中間件的編程思想 用戶可通過配置&#xff0c;選擇是否啟用某個組件/某個功能&#xff0c;只需要配置 eg:報警系統&#xff0c;發郵件&#xff0c;發微信 。。。 ( 根據字符串導入…

Python 全棧開發基礎

python面向對象 python異常處理 python網絡編程 python并發編程 臨時目錄 轉載于:https://www.cnblogs.com/fixdq/p/8883304.html

IBM連續兩年大數據市場占有率全球第一

ZDNet至頂網服務器頻道 04月22日 新聞消息:IBM 近日宣布&#xff0c;根據市場調研機構Wikibon最新研究報告《大數據供應商收益與市場預測》&#xff0c;IBM連續兩年實現大數據市場占有率第一&#xff0c;領跑報告中的70多家大數據供應商。同期&#xff0c;IBM年度報告也顯示&am…

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;也可以使用下面命令行的方式&…

4.Linux的目錄結構

Linux的目錄結構 (1)"/"目錄 Linux文件系統的入口&#xff0c;也是出于最高一級的目錄 (2)"/bin" 基礎系統所需要的那些命令位于此目錄。也是最小系統所需要命令&#xff1b;比如ls、cp、mkdir等命令&#xff1b;功能和/usr/bin類似&#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;獲取子進程的輸入流。…