Текст, нарисованный с помощью DWrite, размыт

Я недавно разрабатывал свою собственную библиотеку GUI. Окно создается с использованием Win32 API, а затем внутри него создается Direct2D RenderTarget. Все рисование (кнопки, метки и т. Д.) Происходит внутри RenderTarget. Все хорошо, за исключением качества текста. Когда я смотрю на кнопки Visual Studio, например, текст выглядит так ясно по сравнению с DirectWrite методом DrawTextW ().

Вот пример изображения:

образ

Я использую DirectWrite для непосредственного рисования текста.
`

ID2D1SolidColorBrush* brush;
RenderTarget->CreateSolidColorBrush(D2D1::ColorF(red, green, blue, alpha), &brush);

IDWriteTextFormat* format;
HRESULT h = WriteFactory->CreateTextFormat(std::wstring(font.begin(), font.end()).c_str(), NULL, fontWeight,
fontStyle, DWRITE_FONT_STRETCH_NORMAL, fontSize, L"", &format);

// Center the text horizontally and vertically.
format->SetTextAlignment(textAllignment);
format->SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT_CENTER);

// Draw text
RenderTarget->DrawTextW(std::wstring(text.begin(), text.end()).c_str(), std::wstring(text.begin(), text.end()).size(), format, D2D1::RectF(xPos, yPos, xPos+width, yPos+height), brush);

brush->Release();
format->Release();

`

Мне просто интересно, это то, что я должен просто принять и двигаться дальше, или я должен что-то настроить с DWriteFactory?

0

Решение

Похоже, у вас монитор с высоким DPI и вы не определили правильный манифест для вашего исполняемого файла. По умолчанию Windows будет думать, что ваше приложение разработано для старых систем 96ppi, и поэтому каждый «пиксель» будет охватывать четыре физических пикселя, если ваш монитор использует, например, 192ppi.

Проверьте это для того, чтобы добавить осведомленность с высоким DPI к вашему заявлению.

В Visual Studio 2015 и выше в настройках проекта есть флаг: «Свойства конфигурации> Инструмент манифеста> Ввод и вывод> DPI Awareness»

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector