WPF 如何实现颜色值拾取

WPF开发者QQ群: 340500857 

前言

      如何进行颜色值拾取?这里采用的是调用WindowsAPI进行实现。

吸取 @沙漠尽头的狼 的建议多写一些文字进行描述。

效果图如下:

第一步 注册WindowsAPI 代码如下:

        [DllImport("user32.dll")]static extern IntPtr GetDC(IntPtr hwnd);[DllImport("user32.dll")]static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);[DllImport("gdi32.dll")]static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);

第二步 定义颜色拾取方法GetPixelColor 和 鼠标GetCursorPos代码如下:

static public System.Windows.Media.Color GetPixelColor(int x, int y){IntPtr hdc = GetDC(IntPtr.Zero);uint pixel = GetPixel(hdc, x, y);ReleaseDC(IntPtr.Zero, hdc);Color color = Color.FromRgb((byte)(pixel & 0x000000FF),(byte)((pixel & 0x0000FF00) >> 8),(byte)((pixel & 0x00FF0000) >> 16));return color;}public class MyPoint{[StructLayout(LayoutKind.Sequential)]public struct POINT{public int X;public int Y;public POINT(int x, int y){this.X = x;this.Y = y;}}[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern bool GetCursorPos(out POINT pt);}

第三步 创建计时器 DispatcherTimer  代码如下:

 private readonly DispatcherTimer_timer = new DispatcherTimer();private const int MousePullInfoIntervalInMs = 10;

第四步 构造函数 代码如下:

 _timer.Interval = TimeSpan.FromMilliseconds(MousePullInfoIntervalInMs);_timer.Tick += Timer_Tick;

第五步  Timer_Tick 代码如下:

private void Timer_Tick(object sender, EventArgs e){MyPoint.POINT point = new MyPoint.POINT();var isMouseDown = MyPoint.GetCursorPos(out point);var color = GetPixelColor(point.X, point.Y);btnColor.Background = new SolidColorBrush(color); //new System.Windows.Media.BrushConverter().ConvertFromString(color);Console.WriteLine(color);}

第六步 XAML 增加控件 代码如下:

<StackPanel><Button Content="拾Color" x:Name="btnColor" Click="Button_Click"></Button><Button Content="取消" Click="Button_Click_1"></Button></StackPanel>

第七步 实现Button 事件 代码如下:

 private void Button_Click(object sender, RoutedEventArgs e){if(!_timer.IsEnabled){_timer.Start();}}private void Button_Click_1(object sender, RoutedEventArgs e){if (_timer.IsEnabled){_timer.Stop();}}

WPF开发者QQ群: 340500857 

blogs: https://www.cnblogs.com/yanjinhua

Github:https://github.com/yanjinhuagood

作者:驚鏵

出处:https://www.cnblogs.com/yanjinhua

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载请著名作者 出处 https://github.com/yanjinhuagood

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

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

相关文章

大文本导入mysql_大文本数据,导入导出到数据库

大文本数据&#xff0c;导入到数据库240w的数据&#xff0c;利用plsql的文本导入器&#xff0c;导了一个半小时&#xff0c;且数据出现缺失。两种方式导入到数据库一&#xff0c;使用sql load创建表create table ext_gv_tmp_amazon_sku(skucode varchar2(255 char),eancode var…

仿Google+相册的动画

在使用Google的时候&#xff0c;查看某一相册&#xff0c;会经常看到&#xff0c;如下图所示的动画效果。 鼠标移入、移出时均有动画效果&#xff0c;咋一看估计是使用了css3的transform属性来实现动画效果的。 在网上搜索“Google 相册 效果”的时候发现有人使用CSS3做了这样的…

看见到洞见之引子(二)机器学习算法

《看见到洞见》系列文章汇聚、分享的是绿盟科技创新中心对于数据分析在安全领域应用的技战术思考与经验&#xff0c;力求由浅入深层次递进&#xff0c;实战到方法论双线剖析。此文为系列文章之引子第二篇&#xff0c;深入浅出的对常用的数据分析和机器学习的算法进行介绍。在上…

mysql pmod项目_内置函数 - 数学函数 - 《Apache Doris 文档(201812)》 - 书栈网 · BookStack...

数学函数abs(double a)功能&#xff1a; 返回参数的绝对值返回类型&#xff1a;double类型使用说明&#xff1a;使用该函数需要确保函数的返回值是整数。acos(double a)功能&#xff1a; 返回参数的反余弦值返回类型&#xff1a;double类型asin(double a)功能&#xff1a; 返回…

gcc中常用的选项

开始学习在Linux下写程序&#xff0c;利用gcc进行编译的时候经常需要添加一些选项&#xff0c;为了便于查找&#xff0c;将这写常用的选项整理出来。GCC常用选项 -c 通知GCC取消链接步骤&#xff0c;即编译源码并在最后生成目标文件&#xff1b; -Dmacro 定义指定的宏&am…

一图看懂 ASP.NET Core 中的服务生命周期

翻译自 Waqas Anwar 2020年11月8日的文章 《ASP.NET Core Service Lifetimes (Infographic)》 [1]ASP.NET Core 支持依赖关系注入&#xff08;DI&#xff09;软件设计模式&#xff0c;该模式允许我们注册服务、控制如何实例化这些服务并将其注入到不同的组件中。一些服务可以在…

看见到洞见之引子(一)机器学习算法

《看见到洞见》系列文章汇聚、分享的是绿盟科技创新中心对于数据分析在安全领域应用的技战术思考与经验&#xff0c;力求由浅入深层次递进&#xff0c;实战到方法论双线剖析。此文为系列文章之引子第一篇&#xff0c;深入浅出的对常用的数据分析和机器学习的算法进行介绍。文章…

支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP

RDKit一个用于化学信息学的python库。使用支持向量回归(SVR)来预测logP。 分子的输入结构特征是摩根指纹&#xff0c;输出是logP。代码示例&#xff1a;#导入依赖库import numpy as npfrom rdkit import Chemfrom rdkit.Chem.Crippen import MolLogPfrom rdkit import Chem, Da…

移除 ZooKeeper 的 kafka 2.8 ,更快了

这段时间招聘季&#xff0c;后台收到不少关于 Kafka 的问题&#xff0c;确实 Kafka 近两年的行情&#xff0c;可谓是水涨船高了。根本原因是&#xff0c;是 Apache Kafka 作为一款开源的消息引擎系统。凭借高可靠、高吞吐、高可用、可伸缩等优越特性&#xff0c;在数据采集、传…

浅议SSH协议

什么是SSH&#xff1f; SSH 为 Secure Shell 的缩写&#xff0c;由 IETF 的网络工作小组&#xff08;Network Working Group&#xff09;所制定&#xff1b;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性…

机器学习 vs 深度学习到底有啥区别,为什么更多人选择机器学习

机器学习和深度学习有什么区别&#xff1f;让我们从本文中寻找答案。目标本文中&#xff0c;我们将深度学习与机器学习作比较。我们将逐一了解他们。我们还会讨论他们在各个方面的不同点。除了深度学习和机器学习的比较&#xff0c;我们还将研究它们未来的趋势。对比介绍深度学…

dreamweaver连接mysql数据库 发生一个不知名错误_用DREAMWEAVER连接数据库测试时总是弹出发生一个不知名的错误 你好! 请问一下这个问题你是怎么解的?...

展开全部2018年05月05日 19:11:13阅读数&#xff1a;1 编辑如图&#xff0c;PHPMySQLDreamweaverCS6连接MySQL就出现不知名错误&#xff0c;查遍全网也没有解决办法。32313133353236313431303231363533e58685e5aeb931333365653139笔者是机械学的专业&#xff0c;电脑是小白&…

ASP.Net 管道模型 VS Asp.Net Core 管道 总结

1 管道模型 1 Asp.Net Web Form管道请求进入Asp.Net工作进程后&#xff0c;由进程创建HttpWorkRequest对象&#xff0c;封装此次请求有关的所有信息&#xff0c;然后进入HttpRuntime类进行进一步处理。HttpRuntime通过请求信息创建HttpContext上下文对象&#xff0c;此对象将贯…

window server2008 r2

http://www.oyksoft.com/soft/10085.html 破解http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylangzh-cn&FamilyIDba571339-5436-4cf5-9c37-6ed7dab6f781转载于:https://www.cnblogs.com/blosaa/archive/2012/02/09/2343988.html

py2exe for python3_使用Py2Exe for Python3创建自己的exe程序

最近使用Python 3.5写了一个GUI小程序&#xff0c;于是想将该写好的程序发布成一个exe文件&#xff0c;供自己单独使用。至于通过安装的方式使用该程序&#xff0c;我没有探索&#xff0c;感兴趣的读者可以自己摸索。1 介绍我使用的开发环境是python3.4(实际上我是在另一个64位…

实际体验SpanT 的惊人表现

前言最近做了一个过滤代码块功能的接口。就是获取一些博客文章做文本处理&#xff0c;然后这些博客文章的代码块太多了&#xff0c;很多重复的代码关键词如果被拿过来处理&#xff0c;那么会对文本的特征表示已经特征选择会有很大的影响。所以需要将这些代码块的部分给过滤掉。…

北京点击科技有限公司董事长兼总裁——王志东经典语录2

11、三次去美国参加IBM大会&#xff0c;连上七天网的时候&#xff0c;我上了IBM的网站&#xff0c;居然找到我笔记本驱动程序有更新&#xff0c;这个对于我来说震动极大。 12、连了网之后我发现互联网就是窗口&#xff0c;我能够通过互联网能够第一时间了解到各方面的信息&…

AI人工智能资料分享来袭,还不快来!

小天从大学开始&#xff0c;便开启资料收集功能。近几年以AlphaGo为契机&#xff0c;人工智能进入新的发展阶段&#xff0c;再加上日常的深入研究&#xff0c;小天收集整理了丰富的AI学习资料&#xff0c;内容涵盖“深度学习资料包”&#xff0c;“数据挖掘资料包”&#xff0c…

qt 安装mysql_qt 安装mysql数据库

为了提升用户在云服务器上的软件安装效率&#xff0c;减少下载和安装软件的成本&#xff0c;操作系统为SUSE的用户可通过 YaST 快速安装软件。本文对此进行简要说明。SUSE 默认使用 zypper 安装软件时提示 denied 的解决办法SUSE 因为是企业级发行版&#xff0c;对于安全和隐私…

聊一聊Jmeter的简单使用

背景 近段时间&#xff0c;团队想补强测试这一块&#xff0c;减少重复性的一些工作&#xff0c;让一些内容可以自动化起来&#xff0c;同时对开发同学写的接口的性能也开始有所要求了。考虑到团队内没有人有测试开发的经验&#xff0c;所以前期的选择还是以工具为主&#xff0c…