Что нового

Аномальность с картинкой формата BMP

black1

C++,Pic
Сообщения
39
Репутация
0
Есть fon.bmp при открытие Paint`ом и размещая текст там.. текст искажается.. (красная обводка)
если делать через
Код:
_GDIPlus_GraphicsDrawString($hGraphics, "WLO", 20, 882, "Arial", 9, 0) ;ресую текс wlo
такая же проблема..
если делать через
Код:
_GDIPlus_GraphicsDrawImage ($hGraphics, $hWLO, 20, 862)  ;ресую изображение из wlo.bmp
то нормально, но иногда повлется эффект тени..

Скрипт и Картинки прикрепил к архиву
http://yadi.sk/d/f182Xi_dH3kYx
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
black1, эта "обводка" называется сглаживание: http://ru.wikipedia.org/wiki/%D0%A1%D0%B3%D0%BB%D0%B0%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
В Windows шрифты по умолчанию сглаживаются. Отключить данное поведение можно в свойствах системы - дополнительные параметры - быстродействие - "сглаживать неровности экранных шрифтов".
Но некоторые шрифты (растровые) не сглаживаются: Courier, Fixedsys, Modern, MS Sans Serif, MS Serif, Roman, System, Terminal. Чтобы это увидеть просто откройте блокнот, наберите текст и меняйте шрифты. После смены шрифта сделайте скриншот и увеличьте - увидите сглажен шрифт или нет.

Поэтому в вашем случае, чтобы убрать "обводку" нужно либо отключить сглаживание в системе, либо выбрать растровый шрифт.
 
Автор
B

black1

C++,Pic
Сообщения
39
Репутация
0
InnI
пробую шрифт подобрать, значит проблемы в сглаживание...

Подбор шрифта не дал результатов.
Отключил сглаживание в системе, все ок!


Как можно скриптом будет галку убрать с Сглаживание неровности экранных шрифтов.. и потом поставить на место..
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
black1 [?]
Подбор шрифта не дал результатов.
Либо _GDIPlus_GraphicsDrawString() не поддерживает растровые шрифты, либо я не знаю, как их подключить.

Посмотрите пример к функции
Код:
_WinAPI_DrawText()
Если в примере заменить "Arial" на "MS Sans Serif", то шрифт не будет сглаженным. Может вам попробовать использовать эту функцию?


Добавлено:
Сообщение автоматически объединено:

black1 [?]
Как можно скриптом будет галку убрать с Сглаживание неровности экранных шрифтов.. и потом поставить на место..
У Win7 значение данной опции хранится в реестре (0 - сглаживание отключено)
Код:
[HKEY_CURRENT_USER\Control Panel\Desktop]
"FontSmoothing"="2"
Изменить значение - не проблема. Но затем нужно либо перевходить в систему, либо посылать Windows какое-то сообщение, которого я не знаю.

А если "по-пользовательски", то можно так
Код:
#RequireAdmin
Run("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3")
$w1 = WinWait("Свойства системы")
ControlClick($w1, "", "Button2")
$w2 = WinWait("Параметры быстродействия")
ControlTreeView($w2, "", "SysTreeView321", "Select", "Сглаживать неровности экранных шрифтов")
ControlSend($w2, "", "SysTreeView321", "{space}")
ControlClick($w2, "", "Button5")
ControlClick($w1, "", "Button8")
 
Верх