LRGB一个带亮度值的颜色
截图有一些颜色失真
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
TrackBar1: TTrackBar;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure FormPaint(Sender: TObject);
procedure Edit1TrackBar1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
LRGB = Cardinal;
{含亮度的颜色,
LRGB($80XXXXXX) = TColor($XXXXXX),
LRGB($FFXXXXXX) = TColor($FFFFFF),
LRGB($00XXXXXX) = TColor(0), }
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R WindowsXP.res}
function TLColor(Color: TColor; LValue: Byte = $80): LRGB;
begin
Result := LValue shl 24 or ColorToRGB(Color);
end;
function LTColor(Color: LRGB): TColor;
var
Delta: Integer;
L, R, G, B, dR, dG, dB: Byte;
begin
R := Byte(Color);
G := Byte(Color shr 8);
B := Byte(Color shr 16);
L := Byte(Color shr 24);
Delta := L - $80;
if L > $80 then
begin
dR := not R;
dG := not G;
dB := not B;
end
else begin
dR := R;
dG := G;
dB := B;
end;
Inc(R, (dR * Delta) shr 7);
Inc(G, (dG * Delta) shr 7);
Inc(B, (dB * Delta) shr 7);
Result := R or (G shl 8) or (B shl 16);
end;
procedure TForm1.FormPaint(Sender: TObject);
var
T: TColor;
begin
T := StrToIntDef(Edit1.Text, 0);
Canvas.Brush.Color := T;
Canvas.FillRect(Bounds(80, 50, 100, 100));
Canvas.Brush.Color := LTColor(TLColor(T, TrackBar1.Position));
Canvas.FillRect(Bounds(200, 50, 100, 100));
end;
procedure TForm1.Edit1TrackBar1Change(Sender: TObject);
begin
Edit2.Text := '$'
+ IntToHex(TLColor(StrToIntDef(Edit1.Text, 0), TrackBar1.Position), 8);
Repaint;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := True;
end;
end.
转载于:https://www.cnblogs.com/xiedewei/archive/2009/01/20/1379120.html
LRGB一个带亮度值的颜色相关推荐
- ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。
题目描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 输入 两个数,空格隔开 输出 交换后的两个数,空格隔开 样例输入 1 2 样例输出 2 ...
- 定义一个带参带返回值的方法,实现输出随机数数组
public class mains { public static void main(String[] args) { // 创建对象,对象名为hello mains hello = new ma ...
- 数据结构:试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来
题目 试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来 分析 Template < ...
- 面试官:实现一个带值变更通知能力的Dictionary
如题, 你知道字典KEY对应的Value什么时候被覆盖了吗? 最近大家都在追.Net6 update,咱还是保持节奏,通用语言聊技术. 没背景说个铲铲 上文中 数据获取组件维护了业务方所有(在用)的连 ...
- vue请求拦截 给所有的api接口的请求 params 带上一个存储的值及qs的安装
vue请求拦截 给所有的api接口的请求 params 带上一个存储的值: Vue.prototype.$http = axios; // 设置请求拦截器,为请求对象添加token,这是后续权限api ...
- 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整
第5章 Core组件进阶 5.4 图像对比度.亮度值调整 5.4.1 理论依据 1.算子:一般图像处理算子都是一个函数,接受一个或多个输入图像,并产生输出图像 2.算子一般形式: 3.点操作(poin ...
- 利用css transition属性实现一个带动画显隐的微信小程序部件
我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说明)所以我们这个时候会 ...
- 幼儿使用计算机亮度,选儿童护眼灯小心被广告忽悠,亮度值并非越高越好!
原标题:选儿童护眼灯小心被广告忽悠,亮度值并非越高越好! 课业负担重,以及过量使用电子产品,"小眼镜"越来越多了.家长们在尽量控制孩子们接触电子产品之外,对他们学习时用的台灯也挑剔 ...
- 基于另一个单元格值的条件格式
本文翻译自:Conditional formatting based on another cell's value I'm using Google Sheets for a daily dashb ...
最新文章
- python vs javascript_Python“是”vs JavaScript===
- webRTC开启摄像头
- 只开窗不镀锡_翡翠为什么要开窗??————开窗有哪几种?
- 哈工大威海c语言实验报告 第八章 无法运行程序,哈工大威海c语言实验报告.doc...
- vim学习、各类插件配置与安装【转】
- windows serve 2012部署操作系统之部署(三)
- UE4的下载和安装(UE4开发环境的搭建)
- Win10系统下使用Setuna截图自动放大解决办法
- python numpy安装失败_【Python】pip安装numpy安装到一半失败解决办法
- 易基因|干货:m6A RNA甲基化MeRIP-seq测序分析实验全流程解析
- 天池比赛实践——阿里云安全恶意程序检测(基于机器学习算法XGBoost)
- dev-c++为什么使用调试时提示[error]ld returned 1 exit status?
- PowerPoint 在播放时自动运行宏
- 2007年9月计算机等级,2007年9月第26次全国计算机等级考试总体安排
- Scikit-learn学习系列 | 1. sklearn的简要使用介绍与数据集获取
- 奶酪巫师的黑客乐园 - 第一个进行硬分叉的区块链游戏?
- 抖音高贵气质的签名_这些抖音直播注意事项,不注意很可能被封号!
- Python中的numpy.cumsum()
- 如何为雷电模拟器安装Burpsuite证书并抓包
- 阿里云邮箱登录日志中有异地IP登录是怎么回事?该怎么办?