c# – 与GDI进行高级色彩混合
发布时间:2020-12-15 08:04:54 所属栏目:百科 来源:网络整理
导读:在 Windows窗体中使用GDI,我希望能够使用笔绘制并根据目标像素颜色混合颜色. 例如,如果我画一条线并且它经过黑色像素,我希望它是一个较浅的颜色(例如白色),以便它可见.当同一条线经过白色像素时,它应该是较暗的颜色(例如黑色),以便它仍然清晰可见. 有没有办
在
Windows窗体中使用GDI,我希望能够使用笔绘制并根据目标像素颜色混合颜色.
例如,如果我画一条线并且它经过黑色像素,我希望它是一个较浅的颜色(例如白色),以便它可见.当同一条线经过白色像素时,它应该是较暗的颜色(例如黑色),以便它仍然清晰可见. 有没有办法用GDI做到这一点? 解决方法
正如Hans Passant所提出的那样,您可以使用画布中当前的内容作为纹理画笔的图像进行绘制(您可能需要双缓冲以使其正常工作)并使用ColorMatrix修改画布上绘制的颜色.
有一个颜色矩阵反转颜色类似于异或,问题是它不适用于中间灰色.反转RGB并保持alpha完整的颜色矩阵将是: -1,0 0,-1,1,0 1,1 类似的东西,尽管速度较慢,但??是将画布复制到图像并使用规则处理每个像素的图像像素,例如颜色是否比0.5更亮,使其稍微变暗,使其稍微更亮.然后,使用该处理过的图像作为纹理画笔进行绘制.这会产生更好的结果,但它会比使用ColorMatrix慢得多. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c – OpenGL:只获取模板缓冲区而没有深度缓冲区?
- c# – 使用Auth标头(如webAPI)但在MVC中进行身份验证
- react-native – 在React Native Android应用程序中创建Web
- reactjs – React单元测试,无法读取未定义的反应路由器的“
- 在线保存IOS数据
- 在SOAP UI模拟响应脚本中访问请求XML
- DWR使用遇到的问题:Servlet dwr-invoker is not available
- 阻塞IO、非阻塞IO、同步IO、异步IO && Reactor模式
- VLAN的Hybrid和Trunk端口有何区别
- ruby-on-rails – 为什么我不能将站点地图写入具有只读文件