diff --git a/src/osx/core/bitmap.cpp b/src/osx/core/bitmap.cpp index 0f8824d81a..e1a93c67cc 100644 --- a/src/osx/core/bitmap.cpp +++ b/src/osx/core/bitmap.cpp @@ -76,7 +76,7 @@ public: bool HasAlpha() const; WXImage GetImage() const; - void SetScaleFactor(double scale) { m_scaleFactor = scale; } + void SetScaleFactor(double scale); double GetScaleFactor() const { return m_scaleFactor; } const void *GetRawAccess() const; @@ -369,6 +369,18 @@ WXImage wxBitmapRefData::GetImage() const return m_nsImage; } +void wxBitmapRefData::SetScaleFactor( double scale ) +{ + wxCHECK_RET( IsOk() , wxT("invalid bitmap") ) ; + + if ( m_scaleFactor == scale ) + return ; + + CGContextScaleCTM( m_hBitmap, 1 / GetScaleFactor(), -1 / GetScaleFactor() ); + m_scaleFactor = scale; + CGContextScaleCTM( m_hBitmap, GetScaleFactor(), -GetScaleFactor() ); +} + void wxBitmapRefData::UseAlpha( bool use ) { wxCHECK_RET( IsOk() , wxT("invalid bitmap") ) ; diff --git a/src/stc/PlatWX.cpp b/src/stc/PlatWX.cpp index 182f28e842..61d3551bdf 100644 --- a/src/stc/PlatWX.cpp +++ b/src/stc/PlatWX.cpp @@ -293,13 +293,12 @@ void SurfaceImpl::InitPixMap(int width, int height, Surface *surface, WindowID w wxMemoryDC* mdc = surface ? new wxMemoryDC(static_cast(surface)->hdc) : new wxMemoryDC(); - mdc->GetImpl()->SetWindow(GETWIN(winid)); hdc = mdc; hdcOwned = true; if (width < 1) width = 1; if (height < 1) height = 1; - bitmap = new wxBitmap(); - bitmap->CreateWithDIPSize(width, height,(GETWIN(winid))->GetDPIScaleFactor()); + bitmap = new wxBitmap(GETWIN(winid)->ToPhys(wxSize(width, height))); + bitmap->SetScaleFactor(GETWIN(winid)->GetDPIScaleFactor()); mdc->SelectObject(*bitmap); }