Support DPI scaling in custom bitmap buttons
This commit is contained in:
parent
bdee545841
commit
8f69336ad1
|
@ -92,16 +92,17 @@ void BITMAP_BUTTON::SetPadding( int aPadding )
|
|||
}
|
||||
|
||||
|
||||
void BITMAP_BUTTON::SetBitmap( const wxBitmap& aBmp )
|
||||
void BITMAP_BUTTON::SetBitmap( const wxBitmapBundle& aBmp )
|
||||
{
|
||||
m_normalBitmap = aBmp;
|
||||
m_unadjustedMinSize = aBmp.GetSize();
|
||||
m_unadjustedMinSize = aBmp.GetPreferredBitmapSizeFor( this );
|
||||
|
||||
SetMinSize( wxSize( aBmp.GetWidth() + ( m_padding * 2 ), aBmp.GetHeight() + ( m_padding * 2 ) ) );
|
||||
SetMinSize( wxSize( m_unadjustedMinSize.GetWidth() + ( m_padding * 2 ),
|
||||
m_unadjustedMinSize.GetHeight() + ( m_padding * 2 ) ) );
|
||||
}
|
||||
|
||||
|
||||
void BITMAP_BUTTON::SetDisabledBitmap( const wxBitmap& aBmp )
|
||||
void BITMAP_BUTTON::SetDisabledBitmap( const wxBitmapBundle& aBmp )
|
||||
{
|
||||
m_disabledBitmap = aBmp;
|
||||
}
|
||||
|
@ -272,11 +273,11 @@ void BITMAP_BUTTON::OnPaint( wxPaintEvent& aEvent )
|
|||
}
|
||||
}
|
||||
|
||||
const wxBitmap& bmp = hasFlag( wxCONTROL_DISABLED ) ? m_disabledBitmap : m_normalBitmap;
|
||||
const wxBitmapBundle& bmp = hasFlag( wxCONTROL_DISABLED ) ? m_disabledBitmap : m_normalBitmap;
|
||||
|
||||
// Draw the bitmap with the upper-left corner offset by the padding
|
||||
if( bmp.IsOk() )
|
||||
dc.DrawBitmap( bmp, m_padding, m_padding, true );
|
||||
dc.DrawBitmap( bmp.GetBitmapFor( this ), m_padding, m_padding, true );
|
||||
|
||||
// Draw the badge
|
||||
if( m_showBadge )
|
||||
|
|
|
@ -73,11 +73,12 @@ void STD_BITMAP_BUTTON::onThemeChanged( wxSysColourChangedEvent &aEvent )
|
|||
}
|
||||
|
||||
|
||||
void STD_BITMAP_BUTTON::SetBitmap( const wxBitmap& aBmp )
|
||||
void STD_BITMAP_BUTTON::SetBitmap( const wxBitmapBundle& aBmp )
|
||||
{
|
||||
m_bitmap = aBmp;
|
||||
wxSize size = aBmp.GetPreferredBitmapSizeFor( this );
|
||||
|
||||
SetMinSize( wxSize( m_bitmap.GetWidth() + 8, m_bitmap.GetHeight() + 8 ) );
|
||||
SetMinSize( wxSize( size.GetWidth() + 8, size.GetHeight() + 8 ) );
|
||||
}
|
||||
|
||||
|
||||
|
@ -205,14 +206,21 @@ void STD_BITMAP_BUTTON::OnPaint( wxPaintEvent& WXUNUSED( aEvent ) )
|
|||
|
||||
if( m_bitmap.IsOk() )
|
||||
{
|
||||
r1.x = ( size.GetWidth() - m_bitmap.GetWidth() ) / 2;
|
||||
wxSize bmpSize = m_bitmap.GetPreferredBitmapSizeFor( this );
|
||||
|
||||
r1.x = ( size.GetWidth() - bmpSize.GetWidth() ) / 2;
|
||||
|
||||
if( r1.x < 0 )
|
||||
r1.x = 0;
|
||||
|
||||
r1.y += ( size.GetHeight() - m_bitmap.GetHeight() ) / 2;
|
||||
r1.y += ( size.GetHeight() - bmpSize.GetHeight() ) / 2;
|
||||
|
||||
dc.DrawBitmap( m_bIsEnable ? m_bitmap : m_bitmap.ConvertToDisabled(), r1.x, r1.y, true );
|
||||
wxBitmap bm = m_bitmap.GetBitmapFor( this );
|
||||
|
||||
if( !m_bIsEnable )
|
||||
bm.ConvertToDisabled();
|
||||
|
||||
dc.DrawBitmap( bm, r1.x, r1.y, true );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#ifndef BITMAP_BUTTON_H_
|
||||
#define BITMAP_BUTTON_H_
|
||||
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/bmpbndl.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/colour.h>
|
||||
|
||||
|
@ -63,14 +63,14 @@ public:
|
|||
*
|
||||
* @param aBmp is the enabled bitmap.
|
||||
*/
|
||||
void SetBitmap( const wxBitmap& aBmp );
|
||||
void SetBitmap( const wxBitmapBundle& aBmp );
|
||||
|
||||
/**
|
||||
* Set the bitmap shown when the button is disabled.
|
||||
*
|
||||
* @param aBmp is the disabled bitmap.
|
||||
*/
|
||||
void SetDisabledBitmap( const wxBitmap& aBmp );
|
||||
void SetDisabledBitmap( const wxBitmapBundle& aBmp );
|
||||
|
||||
/**
|
||||
* Enable the button.
|
||||
|
@ -142,8 +142,8 @@ protected:
|
|||
}
|
||||
|
||||
private:
|
||||
wxBitmap m_normalBitmap;
|
||||
wxBitmap m_disabledBitmap;
|
||||
wxBitmapBundle m_normalBitmap;
|
||||
wxBitmapBundle m_disabledBitmap;
|
||||
|
||||
bool m_isRadioButton;
|
||||
bool m_showBadge;
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#ifndef STD_BITMAP_BUTTON_H
|
||||
#define STD_BITMAP_BUTTON_H
|
||||
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/bmpbndl.h>
|
||||
#include <wx/panel.h>
|
||||
|
||||
class wxButton;
|
||||
|
@ -51,7 +51,7 @@ public:
|
|||
|
||||
~STD_BITMAP_BUTTON();
|
||||
|
||||
void SetBitmap( const wxBitmap& aBmp );
|
||||
void SetBitmap( const wxBitmapBundle& aBmp );
|
||||
bool Enable( bool aEnable = true ) override;
|
||||
|
||||
protected:
|
||||
|
@ -66,7 +66,7 @@ protected:
|
|||
private:
|
||||
int m_stateButton = 0;
|
||||
bool m_bIsEnable = true;
|
||||
wxBitmap m_bitmap;
|
||||
wxBitmapBundle m_bitmap;
|
||||
};
|
||||
|
||||
#endif /*STD_BITMAP_BUTTON_H*/
|
||||
|
|
Loading…
Reference in New Issue