C#实现颜色空间转换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一颜色空间转换
下载链接:/share/link?shareid=139708&uk=521254270 一、实验目的
理解颜色空间的原理,并实现各颜色空间的转换算法.
二、实验内容和步骤
请编程实现以下转换算法:
1.RGB ←→CMY
2.RGB ←→ HSL
3.RGB ←→ HSV
三、实验要求
1. 实现语言不做要求, C, C++, Java, Matlab均可
2. 要求按照课本上的算法实现
3. 请关键语句都加上注释
四、实验结果(本次实验采用C#语言)
1.实验界面截图:
(1)初始截图
(2)操作后截图
2.实验代码
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace RGBChange
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//选择转换模式
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.Text == "RGB-->CMY" || comboBox1.Text == "RGB--->HSL" || comboBox1.Text == "RGB-->HSV")
{
label6.Text = "请输入数据,R:[0,255],G:[0,255],B:[0,255]";
label1.Text = "R:";
label2.Text = "G:";
label3.Text = "B:";
}
if (comboBox1.Text == "CMY-->RGB" )
{
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.Text = "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 == "RGB-->CMY")
{
double r = Convert.ToDouble(textBox1.Text);
double g = Convert.ToDouble(textBox2.Text);
double b = Convert.ToDouble(textBox3.Text);
if (r > 255 || r < 0 || g > 255 || g < 0 || b > 255 || b < 0)
{
label6.Text = "数据输入有误,请重新输入";
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
else
{
rgbTocmy(r, g, b);
}
}
if (comboBox1.Text == "CMY-->RGB")
{
double c = Convert.ToDouble(textBox1.Text);
double m = Convert.ToDouble(textBox2.Text);
double y = Convert.ToDouble(textBox3.Text);
if (c>1||m>1||y>1||c<0||m<0||y<0)
{
label6.Text = "数据输入有误,请重新输入";
textBox1.Text = "";
textBox2.Text = "";