Вверх ↑
Ответов: 3349
Рейтинг: 233
#1: 2011-03-05 19:18:16 ЛС | профиль | цитата
code_22818.txt
------------ Дoбавленo в 18.59:
Roma, Считывание, и распознавание значений RGB цвета, у меня не получилось, а вот восстановить исходные вполне.
------------ Дoбавленo в 19.18:
Вот
Add(MainForm,15775408,133,408)
{
Width=431
Height=205
Caption="Gamma control"
Point(onClose)
link(onCreate,7296535:GetGamma,[(196,428)(196,335)])
link(onClose,5443949:doEvent,[])
}
Add(InlineCode,7296535,315,329)
{
WorkPoints=#8:GetGamma|12:RestoreGamma|8:SetGamma|0:|
EventPoints=#10:onGetGamma|
DataPoints=#3:Red|5:Green|4:Blue|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: res:boolean;|9: public|40: Red,Green,Blue,onGetGamma:THI_Event;|3: |50: procedure SetGamma(var _Data:TData; idx:WORD);|50: procedure GetGamma(var _Data:TData; idx:WORD);|54: procedure RestoreGamma(var _Data:TData; idx:WORD);|23: constructor Create;|5: end;|0:|14:implementation|0:|4:type|48: TRampArray=array[0..2] of array[byte] of word; |1: |3:var|27: origRampArray:TRampArray; |1: |48:function _SetGamma(red,green,blue:word):boolean;|3:var|22: RampArray:TRampArray;|30: i, _Red,_Green,_Blue:integer;|8: DC:HDC;|5:begin|23: for i:=0 to MAXBYTE do|6: begin|27: _Red := i * (Red + 128);|31: _Green := i * (Green + 128);|29: _Blue := i * (Blue + 128);|44: if (_Red > MAXWORD) then _Red := MAXWORD;|48: if (_Green > MAXWORD) then _Green := MAXWORD;|46: if (_Blue > MAXWORD) then _Blue := MAXWORD;|32: RampArray[0][i] := _Red;|34: RampArray[1][i] := _Green;|33: RampArray[2][i] := _Blue;|6: end;|1: |15: DC:=GetDC(0);|5: try|46: result:= SetDeviceGammaRamp(DC,RampArray);|9: finally|19: ReleaseDC(0,DC)|5: end|4:end;|0:|52:function _GetGamma(var red,green,blue:word):boolean;|3:var|22: RampArray:TRampArray;|8: DC:HDC;|5:begin|17: DC:=GetDC(0);|46: result:= GetDeviceGammaRamp(DC,RampArray);|32: red:= RampArray[0][1] - 128;|34: green:= RampArray[1][1] - 128;|33: blue:= RampArray[2][1] - 128;|19: ReleaseDC(0,DC)|4:end;|0:|31:constructor THiAsmClass.Create;|11:var dc:HDC;|6:begin |14: DC:=GetDC(0);|38: GetDeviceGammaRamp(DC,origRampArray);|17: ReleaseDC(0,DC);|4:end;|0:|31:procedure THiAsmClass.SetGamma;|27:var _Red,_Green,_Blue:WORD;|5:begin|34: _Red:=Word(ToIntegerEvent(Red) );|38: _Green:=Word(ToIntegerEvent(Green) );|36: _Blue:=Word(ToIntegerEvent(Blue) );|30: _SetGamma(_Red,_Green,_Blue);|4:end;|0:|31:procedure THiAsmClass.GetGamma;|27:var _Red,_Green,_Blue:WORD;|18: d,d1,d2:TData;|5:begin|30: _GetGamma(_Red,_Green,_Blue);|19: dtInteger(d,_Red);|22: dtInteger(d1,_Green);|21: dtInteger(d2,_Blue);|14: d.ldata:=@d1;|15: d1.ldata:=@d2;|28: _hi_OnEvent(onGetGamma, d);|4:end;|0:|35:procedure THiAsmClass.RestoreGamma;|11:var dc:HDC;|6:begin |14: DC:=GetDC(0);|38: SetDeviceGammaRamp(DC,origRampArray);|17: ReleaseDC(0,DC);|4:end;|0:|4:end.|
link(Red,11155723:Position,[])
link(Green,16401515:Position,[])
link(Blue,1442467:Position,[])
link(onGetGamma,535371:doSeparateMT,[(359,335)(359,286)(198,286)(198,209)])
}
Add(HubEx,4961342,411,231)
{
Angle=1
link(onEvent,11636131:doEvent1,[(415,384)])
}
Add(HubEx,12755372,411,196)
{
Angle=1
link(onEvent,4961342:doWork1,[])
}
Add(Label,672670,161,161)
{
Left=50
Top=35
Width=30
Height=17
Caption="Red: "
}
Add(Label,12211253,158,158)
{
Left=40
Top=70
Width=39
Height=17
Caption="Green: "
}
Add(Label,5584922,155,155)
{
Left=40
Top=105
Width=25
Height=17
Caption="Blue"
}
Add(CheckBox,9326679,441,343)
{
Left=40
Top=135
Width=90
Caption="Яркость"
}
Add(IndexToChanel,12456286,441,385)
{
Point(Index)
link(onEvent2,1646258:doEvent1,[(501,398)(501,149)(216,149)(216,174)])
link(Index,9326679:Checked,[])
}
Add(Hub,11636131,385,378)
{
link(onEvent1,7296535:SetGamma,[(304,384)(304,349)])
link(onEvent2,12456286:doEvent,[])
}
Add(Hub,1646258,224,168)
{
OutCount=3
link(onEvent1,2844136:doWork2,[])
link(onEvent2,8872635:doWork2,[])
link(onEvent3,13746207:doWork1,[(300,188)])
}
Add(TrackBarRush,11155723,315,161)
{
Left=85
Top=30
Width=225
Max=255
TickMarks=2
AntiAlias=0
ThumbLength=0
ThumbWidth=0
TickBorderWidth=0
DotsOrient=1
link(onPosition,12755372:doWork1,[(415,167)])
}
Add(TrackBarRush,16401515,322,196)
{
Left=85
Top=65
Width=225
Max=255
TickMarks=2
AntiAlias=0
ThumbLength=0
ThumbWidth=0
TickBorderWidth=0
DotsOrient=1
link(onPosition,12755372:doWork2,[])
}
Add(TrackBarRush,1442467,329,231)
{
Left=85
Top=105
Width=225
Max=255
TickMarks=2
AntiAlias=0
ThumbLength=0
ThumbWidth=0
TickBorderWidth=0
DotsOrient=1
link(onPosition,4961342:doWork2,[])
}
Add(CheckBox,1803811,203,378)
{
Left=130
Top=135
Width=180
Caption="Востоновить при выходе"
}
Add(ButtonRush,3078179,203,336)
{
Left=310
Top=130
Width=80
Height=30
Caption="Востоновить"
Glyphs=[]
link(onClick,5617420:doWork2,[])
}
Add(IndexToChanel,5443949,203,429)
{
Point(Index)
link(onEvent2,5617420:doWork3,[(270,442)])
link(Index,1803811:Checked,[])
}
Add(HubEx,5617420,266,336)
{
link(onEvent,7296535:RestoreGamma,[])
}
Add(MT_MultiData,535371,217,203)
{
Count=3
PColor(onData1,16711935)
PColor(onData2,11141375)
PColor(onData3,11141290)
link(onData1,2844136:doWork3,[(263,209)])
link(onData2,8872635:doWork3,[(277,216)])
link(onData3,13746207:doWork2,[])
}
Add(HubEx,2844136,259,168)
{
PColor(onEvent,16711935)
link(onEvent,11155723:doPosition2,[])
}
Add(HubEx,8872635,273,175)
{
PColor(onEvent,11141375)
link(onEvent,16401515:doPosition2,[(305,181)(305,209)])
}
Add(HubEx,13746207,296,217)
{
Angle=1
PColor(onEvent,11141290)
link(onEvent,1442467:doPosition2,[(300,244)])
}


карма: 1

0
файлы: 1code_22818.txt [4KB] [208]