c# 光学三原色混合,颜色叠加-dong
东的备注:
光的三原色:红、绿、蓝
红+绿=黄
红+蓝=品红
蓝+绿=青
红+绿+蓝=白
无颜色为黑
下看代码
Bitmap image1 = new Bitmap(500, 500);//红
Bitmap image2 = new Bitmap(500, 500);//绿
Bitmap image3 = new Bitmap(500, 500);//蓝
Bitmap image4 = new Bitmap(500, 500);//混合
Random ran = new Random(); Graphics g = Graphics.FromImage(image1);
SolidBrush brush = new SolidBrush(Color.FromArgb(255,255,0,0));//请勿使用Color.Red 混合后存在色差
SolidBrush brushBackGroud = new SolidBrush(Color.FromArgb(255, 0, 0, 0));
g.FillRectangle(brushBackGroud, new Rectangle(0, 0, 500, 500));
for (int i = 0; i < 10; i++)
{
int x= ran.Next(10, 490);
int y = ran.Next(10, 490);
int width = 80;
int height = 80;
g.FillEllipse(brush,x,y,width,height);
}
g = Graphics.FromImage(image2);
brush = new SolidBrush(Color.FromArgb(255, 0, 255, 0));//请勿使用Color.Green 混合后存在色差
brushBackGroud = new SolidBrush(Color.FromArgb(255, 0, 0, 0));
g.FillRectangle(brushBackGroud, new Rectangle(0, 0, 500, 500));
for (int i = 0; i < 10; i++)
{
int x = ran.Next(10, 490);
int y = ran.Next(10, 490);
int width = 80;
int height = 80;
g.FillEllipse(brush, x, y, width, height);
}
g = Graphics.FromImage(image3);
brush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));//请勿使用Color.Blue 混合后存在色差
brushBackGroud = new SolidBrush(Color.FromArgb(255, 0, 0, 0));
g.FillRectangle(brushBackGroud, new Rectangle(0, 0, 500, 500));
for (int i = 0; i < 10; i++)
{
int x = ran.Next(10, 490);
int y = ran.Next(10, 490);
int width = 80;
int height = 80;
g.FillEllipse(brush, x, y, width, height);
}
//混合
for (int i = 0; i < 500; i++)
{
for (int j = 0; j < 500; j++)
{
image4.SetPixel(i, j, Color.FromArgb(255, image1.GetPixel(i, j).R > 128 ? 255 : 0, image2.GetPixel(i, j).G > 128 ? 255 : 0, image3.GetPixel(i, j).B > 128 ? 255 : 0));
}
}
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox1.Image = image1;
pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox2.Image = image2;
pictureBox3.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox3.Image = image3;
pictureBox4.SizeMode = PictureBoxSizeMode.Zoom;
pictureBox4.Image = image4;
最终实现效果

c# 光学三原色混合,颜色叠加-dong的更多相关文章
- 在 html 中用加色法混合颜色
概要 本文通过解决一个假想的问题介绍了 css screen 混合模式,并介绍了如何用 svg 滤镜.canvas 2d.canvas webgl 实现相同的效果. 问题 下面的图片演示三种颜色光叠加 ...
- Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
Atitti 图像处理 图像混合 图像叠加 blend 原理与实现 混合模式 编辑 本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 混合模式是图像处理技术中的一个技术名词,不 ...
- NeHe OpenGL教程 第三课:颜色渲染
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 基于OpenCV的火焰检测(三)——HSI颜色判据
上文向大家介绍了如何用最简单的RGB判据来初步提取火焰区域,现在我要给大家分享的是一种更加直观的判据--HSI判据. 为什么说HSI判据是更加直观的判据呢?老规矩,先介绍一下HSI色彩模型: HSI颜 ...
- 颜色叠加模式:mix-blend-mode
文章转自叠加模式 http://www.cgspread.com/3551.html 注释:1.混合模式的数学计算公式,另外还介绍了不透明度.2.这些公式仅适用于RGB图像,对于Lab颜色图像而言,这 ...
- OpenGL(三) RGBA颜色设置
OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 像素点附加颜色信息之后,就必须为每一个像素点额外分配一个内存空间保存该点的颜色信息,对于RGBA颜色模式,保存的数据直接代表了颜色, ...
- iOS中的图像处理(三)——混合运算
有时候,单独对一张图像进行处理是很难或者根本达不到我们想要的效果的.一个好的滤镜效果的诞生,往往要经过很多复杂步骤.细致微调.图片应用效果观察以及很多图层叠加. 我在JSWidget上发现了一些常用混 ...
- java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)
1.重点掌握: html: 1.form表单:input,checkbox,seelct,radio,button,submit 2.table表格:thead-->tr-->th;tbo ...
- JavaScript 计算两个颜色叠加值
function multiply(rgb1, rgb2) { var result = [], i = 0; for( ; i < rgb1.length; i++ ) { result.pu ...
- 【Web前端HTML5&CSS3】05-样式继承与其他概念
笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 样式继承与其他概念 1. 继承 2. 选择器的权重 3. 长度单位 像素 屏幕分辨率 图像分辨率 百分比 em ...
随机推荐
- 一文搞懂什么是 API
在我学习软件开发之前,API 听起来像是一种啤酒(IPA,印度淡色艾尔).如今我经常使用这个术语,事实上最近我还尝试在酒吧里点了一个 API,结果酒保给了我一个: 404 资源未找到的回应 无论是在科 ...
- Java面试题全集(一)
JDK.JRE.JVM之间的区别 JDK(Java SE Development Kit),Java标准开发包,它提供了编译.运⾏Java程序所需的各种⼯具和资源,包括Java编译器.Java运⾏时环 ...
- Three.js使用InstancedMesh实现性能优化
1. 引言 有这么一种场景:需要渲染一座桥,桥有很多桥柱,桥柱除了位置与倾斜角度不完全相同外,其他均相同,由于桥柱数量很大,使用three.js绘制较为卡顿,如何优化?注意,要求后续能选中某个桥柱 2 ...
- golang技术降本增效的手段
最近一年各大中小厂都在搞"优化",说到优化,目的还是"降本增效",降低成本,增加效益(效率). 技术层面,也有一些降本增效的常规操作. 比如池化.io缓冲区技术 ...
- [Go笔记] 基础-01: Golang发展简史、著名项目及基本使用
引言 Golang,又称Go语言,是一门开源的静态类型编译型编程语言.自从2007年由谷歌的罗伯特·格里泽默(Robert Griesemer).罗布·派克(Rob Pike)和肯·汤普森(Ken T ...
- 部署基于etcd的coredns集群
前言 现需要为公司搭建私有DNS,私有服务器都使用私有DNS的地址,便于访问内部自定义的域名.采用CoreDNS + ETCD方案部署,coredns和etcd都以三实例运行,etcd为集群模式,使用 ...
- [selenium]相对定位器
前言 Relative Locators,相对定位器,是Selenium 4引入的一个新的定位器,相对定位器根据源点元素去定位相对位置的其它元素. 相对定位方法其实是基于JavaScript的 get ...
- 从零玩转系列之微信支付实战PC端支付微信取消接口搭建 | 技术创作特训营第一期
一.前言 从零玩转系列之微信支付实战PC端支付微信取消接口搭建 | 技术创作特训营第一期 halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序 ...
- ctfshow--web入门--文件上传
ctfshow--web入门--文件上传 web151(前端校验) 题目中提示前端检验不可靠,应该对前端检验进行绕过 检查前端代码进行修改,使php文件可以通过前端校验,成功上传后进行命令执行,找到f ...
- Nginx反向代理服务流式输出设置
Nginx反向代理服务流式输出设置 1.问题场景 提问:为什么我部署的服务没有流式响应 最近在重构原有的GPT项目时,遇到gpt回答速度很慢的现象.在使用流式输出的接口时,接口响应速度居然还是达到了3 ...