用什麼函數能取出Windows 色彩中的亮度?

yimten968 2003-05-20 10:41:23
用什麼函數能取出Windows 色彩中的亮度?
...全文
74 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hewin 2003-06-27
  • 打赏
  • 举报
回复
上面方法的常數定義:
const HLSMAX = 240;
RGBMAX = 255;
UnDefined = 160; // = HLSMax * 2 div 3

=====> Hewin QQ:10794958 <=======
yimten968 2003-06-27
  • 打赏
  • 举报
回复
請問Hewin:
你的代碼中:HLSMAX,RGBMAX,Undefined 是怎麼定義的.
yimten968 2003-06-27
  • 打赏
  • 举报
回复
我指的亮度是ColorDialog.Exceute 中的亮度.
ColorDialog1.Options:=[cdFullOpen];
Hewin 2003-06-26
  • 打赏
  • 举报
回复
用以下方法吧: H,L,S分別為:亮度,濃度,色調
procedure RGB2HLS(R, G, B: Word; var H, L, S: Word);
var cMax,cMin : Word;
Rdelta,Gdelta,Bdelta : WORD;
HH : integer;
begin
cMax := Max(Max(R,G) , B);
cMin := Min(Min(R,G) , B);
L := ((cMax+cMin)*HLSMAX + RGBMAX) div (RGBMAX + RGBMAX);
if cMax = cMin then
begin
H := UnDefined;
S := 0;
end else begin
if (L <= HLSMAX div 2) then
S := (((cMax-cMin)*HLSMAX) + ((cMax+cMin) div 2)) div (cMax+cMin)
else
S := (((cMax-cMin)*HLSMAX) + ((RGBMAX+RGBMAX-cMax-cMin) div 2))
div (RGBMAX+RGBMAX-cMax-cMin);

Rdelta := (((cMax-R)*(HLSMAX div 6)) + ((cMax-cMin) div 2) ) div (cMax-cMin);
Gdelta := (((cMax-G)*(HLSMAX div 6)) + ((cMax-cMin) div 2) ) div (cMax-cMin);
Bdelta := (((cMax-B)*(HLSMAX div 6)) + ((cMax-cMin) div 2) ) div (cMax-cMin);

if (R = cMax) then
HH := Bdelta - Gdelta
else if (G = cMax) then
HH := (HLSMAX div 3) + Rdelta - Bdelta
else
HH := ((HLSMAX+HLSMAX) div 3) + Gdelta - Rdelta;

if (HH < 0) then
HH := HH + HLSMAX;
if (HH > HLSMAX) then
HH := HH - HLSMAX;
H := HH;
end;
end;
zwjchina 2003-06-26
  • 打赏
  • 举报
回复
上面的公式是计算一个颜色对应的灰度,典型的应用是在把一幅彩色图片转换到灰色图片的时候使用。
楼主这里所指的亮度不知道是什么意思。
yimten968 2003-06-26
  • 打赏
  • 举报
回复
不行啊!
PhilexPei 2003-06-09
  • 打赏
  • 举报
回复
0.299*R + 0.587*G + 0.114*B (亮度)
yimten968 2003-05-21
  • 打赏
  • 举报
回复
不準確啊?
windows色彩中的亮度有顯示出來,就是不知用什麼方式能取出來?
SGP 2003-05-20
  • 打赏
  • 举报
回复
公式:
Y = 0.30R + 0.59G + 0.11B // Y为亮度值

这是电视机上的公式,不过我想在这里也应一样吧
SGP 2003-05-20
  • 打赏
  • 举报
回复
取亮度?可以用R,G,B值计算出来的,记得电视机原理书上有,我看看

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧