WPF将RGB转为HSL的工具类
| 
 class HSLColor 
    { 
        private int _alpha = 255; 
        public int _hue = 0; 
        public double _saturation = 1d; 
        public double _lightness = 1d; 
        //public double H; 
        //public double S; 
        //public double L; 
        public HSLColor() 
        { 
        } 
        public HSLColor(Color color) 
        { 
            _alpha = color.A; 
            FromRGB(color); 
            //double h = 0; 
            //double s = 0; 
            //double l = 0; 
            //RGB2HSL(color, out h, out s, out l); 
            //H = 255 * h; 
            //S = 255 * s; 
            //L = 255 * l; 
        } 
        private void FromRGB(Color color) 
        { 
            double r = ((double)color.R) / 255; 
            double g = ((double)color.G) / 255; 
            double b = ((double)color.B) / 255; 
            double min = Math.Min(Math.Min(r, g), b); 
            double max = Math.Max(Math.Max(r, g), b); 
            double distance = max - min; 
            _lightness = (max + min) / 2; 
            if (distance == 0) 
            { 
                _hue = 0; 
                _saturation = 0; 
            } 
            else 
            { 
                double hueTmp; 
                _saturation = 
                    (_lightness < 0.5) ? 
                    (distance / (max + min)) : (distance / ((2 - max) - min)); 
                double tempR = (((max - r) / 6) + (distance / 2)) / distance; 
                double tempG = (((max - g) / 6) + (distance / 2)) / distance; 
                double tempB = (((max - b) / 6) + (distance / 2)) / distance; 
                if (r == max) 
                { 
                    hueTmp = tempB - tempG; 
                } 
                else if (g == max) 
                { 
                    hueTmp = (0.33333333333333331 + tempR) - tempB; 
                } 
                else 
                { 
                    hueTmp = (0.66666666666666663 + tempG) - tempR; 
                } 
                if (hueTmp < 0) 
                { 
                    hueTmp += 1; 
                } 
                if (hueTmp > 1) 
                { 
                    hueTmp -= 1; 
                } 
                _hue = (int)(hueTmp * 250); 
                _saturation = _saturation * 240; 
                _lightness = _lightness * 200; 
            } 
        } 
         public static void RGB2HSL(Color rgb, out double h, out double s, out double l) 
         { 
             double r = rgb.R / 255.0; 
             double g = rgb.G / 255.0; 
             double b = rgb.B / 255.0; 
             double v; 
             double m; 
             double vm; 
             double r2, g2, b2; 
             h = 0; // default to black 
             s = 0; 
             l = 0; 
             v = Math.Max(r, g); 
             v = Math.Max(v, b); 
             m = Math.Min(r, g); 
             m = Math.Min(m, b); 
             l = (m + v) / 2.0; 
             if (l <= 0.0) 
             { 
                 return; 
             } 
             vm = v - m; 
             s = vm; 
             if (s > 0.0) 
             { 
                 s /= (l <= 0.5) ? (v + m) : (2.0 - v - m); 
             } 
             else 
             { 
                 return; 
             } 
             r2 = (v - r) / vm; 
             g2 = (v - g) / vm; 
             b2 = (v - b) / vm; 
             if (r == v) 
             { 
                 h = (g == m ? 5.0 + b2 : 1.0 - g2); 
             } 
             else if (g == v) 
             { 
                 h = (b == m ? 1.0 + r2 : 3.0 - b2); 
             } 
             else 
             { 
                 h = (r == m ? 3.0 + g2 : 5.0 - r2); 
             } 
             h /= 6.0; 
         } 
    } 
 | 
WPF将RGB转为HSL的工具类的更多相关文章
- Java学习-041-颜色工具类(RGB,HEX)
		
在日常的网页开发中,经常需要进行颜色数值获取.转换,例如获取红色,获取蓝色,获取绿色,RGB转十六进制颜色,十六进制颜色转RGB等,因而在学习过程中,写了一个小工具类,仅供各位小主参考! 多不闲言,直 ...
 - ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】
		
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于color整型.rgb数组.16进制互相转换(-12590395 <--> #3FE2C5 <--> ...
 - ColorCode是一个在线随机取色工具,可以随机获取十六进制、RGB、HSl等颜色。
		
ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.HSl等颜色. ColorCode 彩蛋爆料直击现场 ColorCode是一个在线随机取色工具,可以随机获取十六进制.RGB.H ...
 - Java_常用工具类收集
		
一.日期工具类 package com.ebd.application.common.utils; import java.sql.Timestamp; import java.text.DateFo ...
 - java操作excel 工具类
		
java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...
 - 随笔分类 - Android之工具类
		
Android之文件搜索工具类 /** * @detail 搜索sdcard文件 * @param 需要进行文件搜索的目录 * @param 过滤搜索文件类型 */ private void sear ...
 - App开发流程之加密工具类
		
科技优家 2016-09-08 18:10 从这篇记录开始,记录的都算是干货了,都是一些编程日常的积累. 我建议先将基础的工具加入项目,后续的开发效率会呈指数增长.如果在专注功能开发过程中,才发现缺少 ...
 - Java生成带小图标的二维码-google zxing 工具类
		
近期一直忙于开发微信商城项目,应客户要求,要开发个有图标的二维码.经过两次改版,终于实现了该功能(第一次没有小图标,这次才整合好的),如下是完整代码 . 该代码使用Java7开发,另外使用 core- ...
 - 文件类型工具类:FileTypeUtil
		
个人学习,仅供参考! package com.example.administrator.filemanager.utils;import java.io.File;/** * 文件类型工具类 * * ...
 
随机推荐
- java类加载时执行顺序
			
源代码 class HelloA { public HelloA() { System.out.print("A"); } { System.out.print("B&q ...
 - 【OS】NMON的简介和使用
			
[OS]NMON的简介和使用 目前NMON已开源,以sourceforge为根据地,网址是http://nmon.sourceforge.net. 1. 目的 本文介绍操作系统监控工具Nmon的概念. ...
 - Go基础之--反射
			
反射:可以在运行时动态获取变量的相关信息 反射需要导入reflect 反射中重要函数的演示 反射有几下几个重要的函数:reflect.TypeOf :获取变量的类型,返回reflect.Type类型r ...
 - MessagePack简析
			
一.MessagePack是什么 先看官方的定义:MessagePack是一种高效的二进制序列化格式.它允许您像JSON一样在多个语言之间交换数据.但是,它更快并且更小. 从官方定义中,可以有如下的结 ...
 - xBIM WeXplorer xViewer 基本应用
			
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
 - Java DecimalFormat 用法
			
Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text.DecimalFormat; publicclassTes ...
 - mystricpy的实现???
			
#include<iostream>using namespace std;char* mystrcpy(char* dest,const char* src){char* temp=de ...
 - 阿里云 virtual memory exhausted: 无法分配内存
			
在阿里云买了个云服务器,内存1G.编译php时出现下面的错误: virtual memory exhausted: Cannot allocate memory 问题原因:由于物理内存本身很小,且阿里 ...
 - chrome下input文本框自动填充背景问题解决
			
chrome下input文本框会自动填充背景,只需要给文本框加一个样式即可解决问题 input:-webkit-autofill {-webkit-box-shadow: 0 0 0px 1000px ...
 - React设计思想
			
熟悉一个新技术的关键是熟悉他的特色和理念 React框架本身和我们常用的JavaScript MVC框架,如:AngularJS,Backbone,Ember等,没有直接的可比性.在React的官方博 ...