截图有一些颜色失真

unit Unit1;

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一个带亮度值的颜色相关推荐

  1. ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。

    题目描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 输入 两个数,空格隔开 输出 交换后的两个数,空格隔开 样例输入 1 2 样例输出 2 ...

  2. 定义一个带参带返回值的方法,实现输出随机数数组

    public class mains { public static void main(String[] args) { // 创建对象,对象名为hello mains hello = new ma ...

  3. 数据结构:试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来

    题目 试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来 分析 Template < ...

  4. 面试官:实现一个带值变更通知能力的Dictionary

    如题, 你知道字典KEY对应的Value什么时候被覆盖了吗? 最近大家都在追.Net6 update,咱还是保持节奏,通用语言聊技术. 没背景说个铲铲 上文中 数据获取组件维护了业务方所有(在用)的连 ...

  5. vue请求拦截 给所有的api接口的请求 params 带上一个存储的值及qs的安装

    vue请求拦截 给所有的api接口的请求 params 带上一个存储的值: Vue.prototype.$http = axios; // 设置请求拦截器,为请求对象添加token,这是后续权限api ...

  6. 《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整

    第5章 Core组件进阶 5.4 图像对比度.亮度值调整 5.4.1 理论依据 1.算子:一般图像处理算子都是一个函数,接受一个或多个输入图像,并产生输出图像 2.算子一般形式: 3.点操作(poin ...

  7. 利用css transition属性实现一个带动画显隐的微信小程序部件

    我们先来看效果图 像这样的一个带过渡效果的小部件在我们实际开发中的应用几率还是比较大的,但是在开发微信小程序的过程中可能有的小伙伴发现transition这个属性它不好使(下面说明)所以我们这个时候会 ...

  8. 幼儿使用计算机亮度,选儿童护眼灯小心被广告忽悠,亮度值并非越高越好!

    原标题:选儿童护眼灯小心被广告忽悠,亮度值并非越高越好! 课业负担重,以及过量使用电子产品,"小眼镜"越来越多了.家长们在尽量控制孩子们接触电子产品之外,对他们学习时用的台灯也挑剔 ...

  9. 基于另一个单元格值的条件格式

    本文翻译自:Conditional formatting based on another cell's value I'm using Google Sheets for a daily dashb ...

最新文章

  1. python vs javascript_Python“是”vs JavaScript===
  2. webRTC开启摄像头
  3. 只开窗不镀锡_翡翠为什么要开窗??————开窗有哪几种?
  4. 哈工大威海c语言实验报告 第八章 无法运行程序,哈工大威海c语言实验报告.doc...
  5. vim学习、各类插件配置与安装【转】
  6. windows serve 2012部署操作系统之部署(三)
  7. UE4的下载和安装(UE4开发环境的搭建)
  8. Win10系统下使用Setuna截图自动放大解决办法
  9. python numpy安装失败_【Python】pip安装numpy安装到一半失败解决办法
  10. 易基因|干货:m6A RNA甲基化MeRIP-seq测序分析实验全流程解析
  11. 天池比赛实践——阿里云安全恶意程序检测(基于机器学习算法XGBoost)
  12. dev-c++为什么使用调试时提示[error]ld returned 1 exit status?
  13. PowerPoint 在播放时自动运行宏
  14. 2007年9月计算机等级,2007年9月第26次全国计算机等级考试总体安排
  15. Scikit-learn学习系列 | 1. sklearn的简要使用介绍与数据集获取
  16. 奶酪巫师的黑客乐园 - 第一个进行硬分叉的区块链游戏?
  17. 抖音高贵气质的签名_这些抖音直播注意事项,不注意很可能被封号!
  18. Python中的numpy.cumsum()
  19. 如何为雷电模拟器安装Burpsuite证书并抓包
  20. 阿里云邮箱登录日志中有异地IP登录是怎么回事?该怎么办?

热门文章

  1. 大数据怎样帮助运维工程师实现无死角监控?
  2. [转]Http请求中Content-Type讲解以及在Spring MVC中的应用
  3. Oracle新建用户、角色,授权,建表空间
  4. 【Rayeager PX2分享】OpenCV入门之图像显示
  5. cisco命令学习,每天加一点
  6. 中国移动总经理易人对产业格局的影响
  7. C++0x 通用属性
  8. 异步FIFO中空满信号如何产生?
  9. 路由器连接宽带(成功上网步骤方法)
  10. X-006 FriendlyARM tiny4412 u-boot移植之Debug串口用起来