****************************************************************************** * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * ******************************************************************************) unit A3D_GAMMA;
interface uses math, windows;
type
TGammaRamp = packed record R, G, B: array[0..255] of Word; end;
// Get the system's current gamma ramp, so we can restore later. FillChar(originalRamp, SizeOf(originalRamp), 0); GetDeviceGammaRamp(dc, originalRamp); adjustedRamp := originalRamp;
end;
procedure A3D_SetNewGamma(dc: HDC; val: single); var i, v : integer; begin for i := 0 to 255 do begin v := Round(255 * Power(i / 255, val)); if v > 255 then v := 255; // You can adjust each curve separately, but you usually shouldn't need to. adjustedRamp.R[i] := v shl 8; adjustedRamp.G[i] := v shl 8; adjustedRamp.B[i] := v shl 8; end;
// Send the adjusted gamma ramp to the video card. SetDeviceGammaRamp(dc, adjustedRamp);
end;
procedure A3D_RestoreGamma(dc: HDC); begin SetDeviceGammaRamp(dc, originalRamp); end; end.
Добрый день, Ray Adams.
Или может быть еще кто-нибудь поможет.
Я нашел на форуме Ваше сообщение по поводу изменения яркости приложения. Что-то у меня не выходит.
Нужно изменить яркость конкретного приложения, а не всего экрана. А лучше конкретной области экрана с некоторыми координатами.
Вот мой код, я из одного приложения пытаюсь изменить яркость другого приложения:
Procedure.......;
var ZAppName: array[0..127] of char;
Hold: String;
Found: HWND;
begin
Hold := 'Система управления туалетом';
StrPCopy(ZAppName, Hold);
Found:=FindWindow(Nil, ZAppName);
DCFORM:=GetDC(Found);
A3D_StoreOriginalGamma(DCFORM);
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
A3D_SetNewGamma(DCFORM, 2.5-ScrollBar1.Position/10);
Label1.Caption := ' Степень яркости приложения' + IntToStr(ScrollBar1.Position);
end;
DCFORM ищется, по крайней мере не ноль. Но яркость изменяется всего экрана, а не данного найденного приложения. Странно, может быть я что-то не так делаю.
И еще вопрос, если можно. Как изменить ярколсть только определенного куска экрана с некоторыми координатами?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения