From 125b2c18ea92a0a4d6ad7022eda62c4c0cce8c00 Mon Sep 17 00:00:00 2001 From: Maarten Bent Date: Sun, 16 Oct 2016 14:48:00 +0200 Subject: [PATCH] Adjust font of wxDC to DPI of associated window --- src/msw/dc.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 9652af4ccf..72e89c9acd 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -1438,7 +1438,18 @@ void wxMSWDCImpl::DoDrawRotatedText(const wxString& text, // NB: don't take DEFAULT_GUI_FONT (a.k.a. wxSYS_DEFAULT_GUI_FONT) // because it's not TrueType and so can't have non zero // orientation/escapement - wxFont font = m_font.IsOk() ? m_font : *wxSWISS_FONT; + wxFont font; + if ( m_font.IsOk() ) + { + font = m_font; + } + else // Use default font appropriate for rotated text. + { + font = *wxSWISS_FONT; + if ( m_window ) + font.WXAdjustToPPI(m_window->GetDPI()); + } + LOGFONT lf; if ( ::GetObject(GetHfontOf(font), sizeof(lf), &lf) == 0 ) { @@ -1565,7 +1576,11 @@ void wxMSWDCImpl::SetFont(const wxFont& font) if ( font.IsOk() ) { - HGDIOBJ hfont = ::SelectObject(GetHdc(), GetHfontOf(font)); + wxFont f(font); + if ( m_window ) + f.WXAdjustToPPI(m_window->GetDPI()); + + HGDIOBJ hfont = ::SelectObject(GetHdc(), GetHfontOf(f)); if ( hfont == HGDI_ERROR ) { wxLogLastError(wxT("SelectObject(font)")); @@ -1575,7 +1590,7 @@ void wxMSWDCImpl::SetFont(const wxFont& font) if ( !m_oldFont ) m_oldFont = (WXHFONT)hfont; - m_font = font; + m_font = f; } } else // invalid font, reset the current font