Вверх ↑
Этот топик читают: Гость
Ответов: 3349
Рейтинг: 233
#1: 2011-03-04 20:45:52 ЛС | профиль | цитата
Схема контролирования цветовой гаммы монитора.
code_22799.txt
карма: 1

2
файлы: 1code_22799.txt [3.1KB] [257]
Голосовали:sаmakacd, MAV
Ответов: 1821
Рейтинг: 168
#2: 2011-03-04 21:12:03 ЛС | профиль | цитата
Ivann, схема очень полезная, спасибо себе компонент с этого сделал, будет чем занятся
карма: 5

0
Ответов: 157
Рейтинг: 1
#3: 2011-03-04 23:39:44 ЛС | профиль | цитата
Спасибо за полезную схему только на форуме за эту идею написал ))
А почему такой компонент не добавлен в Hiasm ?
карма: 0

0
Ответов: 1821
Рейтинг: 168
#4: 2011-03-04 23:58:24 ЛС | профиль | цитата
Мартынов, тот ІС, что в схеме, напечатал Ivann. Видимо он сегодня этот IC напечатал.
------------ Дoбавленo в 23.58:
Как компонент может появится в палитре элементов в тот же день, когда был "открытым"
карма: 5

0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2011-03-05 00:10:01 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-11 07:49:53
карма: 0

0
Ответов: 1821
Рейтинг: 168
#6: 2011-03-05 00:13:42 ЛС | профиль | цитата
[flood]
г. Гость писал(а):
На компонент не тянет, всего одна функция
можно сделать прибавку для какого-то другого компонента[/flood]
карма: 5

0
Ответов: 157
Рейтинг: 1
#7: 2011-03-05 09:06:41 ЛС | профиль | цитата
Лучше добавить отдельным элементом функциональность редкая и не все ее будут использовать а вес exe увеличется.
карма: 0

0
Ответов: 3349
Рейтинг: 233
#8: 2011-03-05 11:48:33 ЛС | профиль | цитата
Мартынов писал(а):
и не все ее будут использовать а вес exe увеличется.

Если не используется, то вес не увеличивается.
карма: 1

1
Голосовали:Мартынов
Гость
Ответов: 17029
Рейтинг: 0
#9: 2011-03-05 13:29:58 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-11 07:49:53
карма: 0

0
Ответов: 3349
Рейтинг: 233
#10: 2011-03-05 13:31:16 ЛС | профиль | цитата
Использует функцию WinApi.
карма: 1

0
Ответов: 130
Рейтинг: 3
#11: 2011-03-05 13:37:07 ЛС | профиль | цитата
А в Windows точно ничего не испортит?

[flood]dynamicip-188-232-38-51.p, это я был[/flood]
карма: 0

0
Ответов: 3349
Рейтинг: 233
#12: 2011-03-05 13:51:22 ЛС | профиль | цитата
Dima писал(а):
А в Windows точно ничего не испортит?

Откуда паранойя ?
MSDN писал(а):
The SetDeviceGammaRamp function sets the gamma ramp on direct color display boards having drivers that support downloadable gamma ramps in hardware.

Нечего испортить не должно. За испорченную винду ответственности не несу
карма: 1

0
Ответов: 1304
Рейтинг: 405
#13: 2011-03-05 18:25:57 ЛС | профиль | цитата
Ivann, Get... тоже бы пригодился, а то возращать установки видеодрайвера сбросом в исходные, не очень хорошо.
карма: 3

0
Ответов: 1321
Рейтинг: 37
#14: 2011-03-05 18:41:12 ЛС | профиль | цитата
Для этого нужно дописать код для считывания значений
карма: 0

0
Ответов: 3349
Рейтинг: 233
#15: 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]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)