

L из HSL - это "не чернобелое изображение" по формуле: Y = 0.3R + 0.59G + 0.11B. Это "множитель", в канале, для построения цвета, он не для того чтобы на него смотрели глазами. + Гамма коррекция применяется при выводе готового цвета.
Не знаю в чем дело но при помощи матпарсера и элемента toRGB не получается ничего сделать.
Add(MainForm,3894380,126,119)
{
Width=462
Height=528
}
Add(Image,1352448,252,84)
{
Left=20
Top=15
Width=200
Height=200
Point(ImageHeight)
Point(ImageWidth)
Point(Handle)
}
Add(Image,15109500,525,84)
{
Left=240
Top=15
Width=200
Height=200
Point(Handle)
}
Add(Button,9147465,126,189)
{
Left=200
Top=230
link(onClick,13645465:doFor,[])
}
Add(Img_GetPoint,10060352,273,189)
{
DrawSource=1
link(onGetPixel,9553592:doEvent1,[])
link(Bitmap,1352448:Handle,[])
link(X,5091942:Var2,[])
link(Y,9919725:Var2,[])
}
Add(Img_Point,13693910,532,189)
{
DrawSource=1
Color=16777215
Point(X)
Point(Y)
Point(Color)
link(Bitmap,15109500:Handle,[])
link(X,5091942:Var3,[(545,177)])
link(Y,9919725:Var3,[(552,171)])
link(Color,12275428:Value,[(559,177)(572,177)(572,233)(489,233)])
}
Add(For,13645465,175,189)
{
link(onEvent,9702025:doFor,[])
link(End,1352448:ImageHeight,[(188,132)(265,132)])
}
Add(For,9702025,224,189)
{
link(onEvent,10060352:doGetPixel,[])
link(End,1352448:ImageWidth,[(237,153)(272,153)])
}
Add(GetDataEx,9919725,287,166)
{
Angle=3
link(Data,16740594:Var3,[(215,171)(215,235)])
}
Add(GetDataEx,5091942,280,172)
{
Angle=3
link(Data,15022378:Var3,[(264,177)(264,232)])
}
Add(InlineCode,4885515,413,189)
{
WorkPoints=#6:doWork|
EventPoints=#5:onRes|
Code=#15:unit HiAsmUnit;|12:// Autor Tad|0:|9:interface|0:|37:uses Windows,kol,Share,Debug,GDIPAPI;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|19: onRes:THI_Event;|49: procedure doWork(var _Data:TData; Index:Word);|5: end;|22:// Y=0.21R+0.72G+0.07B|14:implementation|29:procedure THiAsmClass.doWork;|17:var i,cl:integer;|5:BEGIN|22: i:= toInteger(_Data);|32: cl := Round(0.21*GetRValue(i)+ |36: 0.72*GetGValue(i)+ |37: 0.07*GetBValue(i)); |0:|34: _hi_onEvent(onRes,RGB(cl,cl,cl));|4:END;|4:end.|
link(onRes,12275428:doValue,[])
}
Add(Memory,12275428,483,189)
{
link(onData,13693910:doDraw,[])
}
Add(Image,7652832,546,259)
{
Left=125
Top=270
Width=200
Height=200
Point(Handle)
}
Add(Img_Point,5848231,553,385)
{
DrawSource=1
Color=16777215
Point(X)
Point(Y)
Point(Color)
link(Bitmap,7652832:Handle,[])
link(X,15022378:Var2,[(566,311)(230,311)])
link(Y,16740594:Var2,[(573,312)(181,312)])
link(Color,7091229:Value,[(580,373)(593,373)(593,429)(510,429)])
}
Add(Memory,7091229,504,385)
{
Default=Real(0)
link(onData,5848231:doDraw,[])
}
Add(Hub,9553592,329,189)
{
link(onEvent1,4885515:doWork,[])
link(onEvent2,7997199:doGetRGB,[(375,202)(375,391)])
}
Add(ToRGB,7997199,392,385)
{
Color=12632256
link(onResult,9422614:doCalc,[])
link(Color,10060352:Color,[(398,303)(279,303)])
}
Add(FastMathParse,9422614,455,385)
{
DataCount=3
MathStr="(0.21 * %1) + (0.72 * %2) + (0.07 * %3)"
ResultType=0
link(onResult,7091229:doValue,[])
link(X1,7997199:R,[(461,373)(433,373)(433,429)(398,429)])
link(X2,7997199:G,[(468,373)(436,373)(436,429)(405,429)])
link(X3,7997199:B,[(475,373)(447,373)(447,429)(412,429)])
}
Add(GetDataEx,15022378,224,227)
{
link(Data,9702025:Position,[])
}
Add(GetDataEx,16740594,175,230)
{
link(Data,13645465:Position,[])
}