C#实现颜色空间转换

上传人:豆浆 文档编号:1994845 上传时间:2017-07-18 格式:DOC 页数:13 大小:220.50KB
返回 下载 相关 举报
C#实现颜色空间转换_第1页
第1页 / 共13页
C#实现颜色空间转换_第2页
第2页 / 共13页
C#实现颜色空间转换_第3页
第3页 / 共13页
C#实现颜色空间转换_第4页
第4页 / 共13页
C#实现颜色空间转换_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《C#实现颜色空间转换》由会员分享,可在线阅读,更多相关《C#实现颜色空间转换(13页珍藏版)》请在金锄头文库上搜索。

1、实验一 颜色空间转换 下载链接:http:/ RGB CMY2. RGB HSL3. RGB HSV三、实验要求1. 实现语言不做要求, C, C+, Java, Matlab 均可2. 要求按照课本上的算法实现3. 请关键语句都加上注释四、实验结果(本次实验采用 C#语言)1实验界面截图:(1)初始截图(2)操作后截图2.实验代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;us

2、ing System.Text;using System.Windows.Forms;namespace RGBChangepublic partial class Form1 : Formpublic Form1()InitializeComponent();/选择转换模式private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)if (comboBox1.Text = RGBCMY | comboBox1.Text = RGB-HSL | comboBox1.Text = RGBHSV)label6.Tex

3、t = 请输入数据,R:0,255,G:0,255,B:0,255;label1.Text = R:;label2.Text = G:;label3.Text = B:;if (comboBox1.Text = CMYRGB )label6.Text = 请输入数据,C:0,360,M:0,1,Y:0,1;label1.Text = C:;label2.Text = M:;label3.Text = Y:;if (comboBox1.Text = HSV-RGB )label6.Text = 请输入数据,H:0,360,S:0,1,:0,1 ;label1.Text = H:;label2.T

4、ext = S:;label3.Text = V:; if (comboBox1.Text = HSL-RGB )label6.Text = 请输入数据,H:0,360,S:0,1,L:0,1;label1.Text = H:;label2.Text = S:;label3.Text = L:;private void textBox3_TextChanged(object sender, EventArgs e)/判断输入数据是否合理private void button1_Click(object sender, EventArgs e)if (comboBox1.Text = RGBCM

5、Y)double r = Convert.ToDouble(textBox1.Text);double g = Convert.ToDouble(textBox2.Text);double b = Convert.ToDouble(textBox3.Text);if (r 255 | r 255 | g 255 | b RGB)double c = Convert.ToDouble(textBox1.Text);double m = Convert.ToDouble(textBox2.Text);double y = Convert.ToDouble(textBox3.Text);if (c1

6、|m1|y1|cHSV)double r = Convert.ToDouble(textBox1.Text);double g = Convert.ToDouble(textBox2.Text);double b = Convert.ToDouble(textBox3.Text);if (r 255 | r 255 | g 255 | b RGB)double h = Convert.ToDouble(textBox1.Text);double s = Convert.ToDouble(textBox2.Text);double v = Convert.ToDouble(textBox3.Te

7、xt);if (h 360 | s 1 | v 1 | h HSL)double r = Convert.ToDouble(textBox1.Text);double g = Convert.ToDouble(textBox2.Text);double b = Convert.ToDouble(textBox3.Text);if (r 255 | r 255 | g 255 | b RGB)double h = Convert.ToDouble(textBox1.Text);double s = Convert.ToDouble(textBox2.Text);double l = Conver

8、t.ToDouble(textBox3.Text);if (h 360 | s 1 | l 1 | h 1) r = r / 255; if (g 1) g = g / 255;if (b 1) b = b / 255;double c = 1 - r;double m = 1 - g;double y = 1 - b;label4.Text = C: + c + ; M: + m + ; Y: + y;/CMY转换为RGBprivate void cmyTorgb(double c,double m,double y)double r = 1 - c;double g = 1 - m;dou

9、ble b = 1 - y;label4.Text = R: + r*255 + ; G: + g*255 + ; B: + b*255;/RGB转换为HSLprivate void rgbTohsl(double r, double g, double b)double h = 0;double s, l;double max = r, min = r;if (r 1) r = r / 255;if (g 1) g = g / 255;if (b 1) b = b / 255;if (max g) min = g;if (min b) min = b;l = (max + min) / 2;

10、if (max = min)s = 0; h = 0;elseif (l 1) h = h / 360; if (s = 0)r = l;g = l;b = l;elseif (l = 0.5) temp2 = (l + s) - l * s; temp1 = 2.0 * l - temp2;Rtemp3 = h + 0.33; Gtemp3 = h;Btemp3 = h - 0.33;if (Rtemp3 1) Rtemp3 = Rtemp3 - 1; if (Gtemp3 1) Gtemp3 = Gtemp3 - 1; if (Btemp3 1) Btemp3 = Btemp3 - 1;

11、if (6.0 * Rtemp3 1) r = r / 255;if (g 1) g = g / 255;if (b 1) b = b / 255;if (max g) min = g;if (min b) min = b;v = max;s = (max - min) / max;if (s = 0) h = 0; elseif (r = max) h = (g - b) / (max - min); if (g= max) h=2+(b-r)/(max - min);if (b = max) h=4+(r-g)/(max - min);h = h * 60;if (h 0) h = h +

12、 360; label4.Text = H: + h + ; S: + s + ; V: + v;/HSV转换为RGBprivate void hsvTorgb(double h, double s, double v) double r = 0, g = 0, b = 0;if (s =0 & h = 0) r = v; g = v; b = v; if (h = 360) h = 0; h = h / 60;int i = (int)Math.Floor(h); /向下取整double f = h - i;double p = v * (1 - s);double q = v * (1 -

13、 (s * f);double t = v * (1 - (s * (1 - f);switch (i)case 0: r = v; g = t; b = p; break; case 1: r = q; g = v; b = p; break;case 2: r = p; g = v; b = t; break;case 3: r = p; g = q; b = v; break;case 4: r = t; g = p; b = v; break;case 5: r = v; g = p; b = q; break;label4.Text = R: + r + ; G: + g + ; B: + b;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号