IPB

Добро пожаловать, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Временное отключение Cleartype, для скриншотов, например
Grom PE
Apr 3 2008, 09:57
Сообщение #1


Advanced Member
***

Группа: CTPAX-X
Сообщений: 84
Регистрация: 7-February 08
Из: i@grompe.org.ru
Пользователь №: 3,120
Спасибо сказали: 95 раз(а)



Большую часть времени у меня включено сглаживание шрифтов (Cleartype), на моем экране так лучше виден текст.
Но бывают ситуации, когда Cleartype вреден. Например, при снятии скриншотов его лучше отключить.
Я заметил, что экранная лупа (magnify.exe) отключает его на время своего запуска, и решил добиться такого же эффекта.
В результате получился такой код на Delphi:
CODE
uses Windows;

//const // Uncomment this if you're using Delphi 6 or earlier
//  FE_FONTSMOOTHINGSTANDARD = $0001;
//  FE_FONTSMOOTHINGCLEARTYPE = $0002;
//  SPI_GETFONTSMOOTHINGTYPE = $200A;
//  SPI_SETFONTSMOOTHINGTYPE = $200B;

const
  SysParamFlags=SPIF_SENDWININICHANGE or SPIF_UPDATEINIFILE;
  RedrawFlags=RDW_INVALIDATE or RDW_ERASE or RDW_ALLCHILDREN
    or RDW_UPDATENOW or RDW_ERASENOW;
var
  SmoothingType:cardinal;
  WasCleartype:boolean;
begin
  SystemParametersInfo(SPI_GETFONTSMOOTHINGTYPE,0,@SmoothingType,0);
  WasCleartype:=SmoothingType=FE_FONTSMOOTHINGCLEARTYPE;
  if WasCleartype then
  begin
    SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,0,
      pointer(FE_FONTSMOOTHINGSTANDARD),SysParamFlags);
    RedrawWindow(0,nil,0,RedrawFlags);
  end;
  // Make screenshot, etc.
  MessageBox(0,'Cleartype is disabled at this point...','Test',0);
  // Restore Cleartype state
  if WasCleartype then
  begin
    SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,0,
      pointer(FE_FONTSMOOTHINGCLEARTYPE),SysParamFlags);
    RedrawWindow(0,nil,0,RedrawFlags);
  end;
end.
Естественно, для версий Windows ниже XP этот код не нужен, и не будет работать.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 19th April 2024 - 09:45