本文整理汇总了C++中wxMemoryDC::SelectObject方法的典型用法代码示例。如果您正苦于以下问题:C++ wxMemoryDC::SelectObject方法的具体用法?C++ wxMemoryDC::SelectObject怎么用?C++ wxMemoryDC::SelectObject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxMemoryDC
的用法示例。
在下文中一共展示了wxMemoryDC::SelectObject方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawBackground
void FreqWindow::DrawBackground(wxMemoryDC & dc)
{
Layout();
if (mBitmap)
{
delete mBitmap;
mBitmap = NULL;
}
mPlotRect = mFreqPlot->GetClientRect();
mBitmap = new wxBitmap(mPlotRect.width, mPlotRect.height);
dc.SelectObject(*mBitmap);
dc.SetBackground(wxBrush(wxColour(254, 254, 254)));// DONT-THEME Mask colour.
dc.Clear();
dc.SetPen(*wxBLACK_PEN);
dc.SetBrush(*wxWHITE_BRUSH);
dc.DrawRectangle(mPlotRect);
dc.SetFont(mFreqFont);
}
示例2: RenderRegionViewOnDC
bool ChartPlugInWrapper::RenderRegionViewOnDC(wxMemoryDC& dc, const ViewPort& VPoint,
const wxRegion &Region)
{
if(m_ppicb)
{
PlugIn_ViewPort pivp = CreatePlugInViewport( VPoint);
dc.SelectObject(m_ppicb->RenderRegionView( pivp, Region));
return true;
}
else
return false;
}
示例3: DrawBackground
void FreqWindow::DrawBackground(wxMemoryDC & dc)
{
Layout();
mBitmap.reset();
mPlotRect = mFreqPlot->GetClientRect();
mBitmap = std::make_unique<wxBitmap>(mPlotRect.width, mPlotRect.height);
dc.SelectObject(*mBitmap);
dc.SetBackground(wxBrush(wxColour(254, 254, 254)));// DONT-THEME Mask colour.
dc.Clear();
dc.SetPen(*wxBLACK_PEN);
dc.SetBrush(*wxWHITE_BRUSH);
dc.DrawRectangle(mPlotRect);
dc.SetFont(mFreqFont);
}
示例4: OnTimer
void SjOscWindow::OnTimer(wxTimerEvent&)
{
SJ_FORCE_IN_HERE_ONLY_ONCE;
if( m_oscModule )
{
// volume stuff
long volume, maxVolume = 1;
bool volumeBeat;
// other objects
long i;
bool titleChanged, forceOscAnim, forceSpectrAnim;
wxString newTitle;
// get data
g_mainFrame->m_player.GetVisData(m_bufferStart, m_sampleCount*SJ_WW_CH*SJ_WW_BYTERES, 0);
// get window client size, correct offscreen DC if needed
wxSize clientSize = m_oscModule->m_oscWindow->GetClientSize();
if( clientSize.x != m_offscreenBitmap.GetWidth() || clientSize.y != m_offscreenBitmap.GetHeight() )
{
m_offscreenBitmap.Create(clientSize.x, clientSize.y);
m_offscreenDc.SelectObject(m_offscreenBitmap);
}
// calculate the points for the lines, collect volume
m_oscilloscope->Calc(clientSize, m_bufferStart, volume);
if( m_oscModule->m_showFlags&SJ_OSC_SHOW_SPECTRUM )
{
m_spectrum->Calc(clientSize, m_bufferStart);
}
// get data that are shared between the threads
{
titleChanged = m_oscModule->m_titleChanged;
m_oscModule->m_titleChanged = FALSE;
if( titleChanged )
{
newTitle = m_oscModule->m_trackName;
if( newTitle.IsEmpty() )
{
newTitle = SJ_PROGRAM_NAME;
}
else if( !m_oscModule->m_leadArtistName.IsEmpty() )
{
newTitle.Prepend(m_oscModule->m_leadArtistName + wxT(" - "));
}
}
forceOscAnim = m_oscModule->m_forceOscAnim;
m_oscModule->m_forceOscAnim = FALSE;
forceSpectrAnim = m_oscModule->m_forceSpectrAnim;
m_oscModule->m_forceSpectrAnim = FALSE;
}
// calculate volume, volume is theoretically max. 255, normally lesser
if( titleChanged ) { maxVolume = 1; }
if( volume > maxVolume ) { maxVolume = volume; }
volumeBeat = (volume > maxVolume/2);
// erase screen
m_offscreenDc.SetPen(*wxTRANSPARENT_PEN);
{
// blue gradient background
#define BG_STEPS 88
int rowH = (clientSize.y/BG_STEPS)+1;
for( i = 0; i < BG_STEPS; i++ )
{
m_bgBrush.SetColour(0, 0, i);
m_offscreenDc.SetBrush(m_bgBrush);
m_offscreenDc.DrawRectangle(0, i*rowH, clientSize.x, rowH);
}
}
// draw text (very background)
{
m_offscreenDc.SetBackgroundMode(wxTRANSPARENT);
m_offscreenDc.SetTextForeground(m_textColour);
m_title->Draw(m_offscreenDc, clientSize, titleChanged, newTitle);
}
// draw figures (they lay in backgroud)
if( m_oscModule->m_showFlags&SJ_OSC_SHOW_FIGURES )
{
long bgLight = 100;
// draw hands (optional)
m_hands->Draw(m_offscreenDc, clientSize, volume, bgLight, titleChanged);
// draw rotor (optional)
m_rotor->Draw(m_offscreenDc, clientSize, m_starfield->IsRunning(), titleChanged, volume, bgLight);
// draw firework (optional)
m_firework->Draw(m_offscreenDc, clientSize, titleChanged, m_starfield->IsRunning(), volumeBeat, bgLight);
}
// draw starfield (optional)
//.........这里部分代码省略.........
示例5: OnTimer
void SjKaraokeWindow::OnTimer(wxTimerEvent&)
{
wxASSERT( wxThread::IsMain() );
/**********************************************************************
* PREPARE DRAWING
**********************************************************************/
if( m_karaokeModule == NULL || m_karaokeModule->m_bg == NULL ) return;
if( m_inPaint ) return;
m_inPaint = true;
#ifdef __WXMAC__
m_pleaseUpdateAll = true; // partly updates do not work well on Mac OS X
#endif
// does the size of the window have changed?
if( m_clientSize != GetClientSize() || m_bgChanged )
{
// yes: save the new size
m_clientSize = GetClientSize();
m_pleaseUpdateAll = true;
// (re-)create the offscreen DC
m_offscreenBitmap.Create(m_clientSize.x, m_clientSize.y);
m_offscreenDc.SelectObject(m_offscreenBitmap);
// force reloading of the background image
m_karaokeModule->m_bg->SetSize(m_clientSize);
m_bgChanged = false;
}
// check what to show
int karaokeEnded = 1;
if( m_karaokeMaster.HasKaraoke() )
{
long totalMs, elapsedMs, remainingMs;
g_mainFrame->m_player.GetTime(totalMs, elapsedMs, remainingMs);
if( elapsedMs >= 0 ) // -1=error, 0=normal position 0:00
{
karaokeEnded = m_karaokeMaster.SetPosition(elapsedMs)? 0 : 1;
}
}
if( karaokeEnded != m_karaokeEnded )
{
if( karaokeEnded )
{
if( m_sjScreen == NULL )
m_sjScreen = new SjSjScreen(wxT("SILVERJUKE KARAOKE"),
g_mainFrame->IsKioskStarted()? wxT("www.silverjuke.net") : wxT(""), 8000);
}
else
{
if( m_sjScreen )
{
delete m_sjScreen;
m_sjScreen = NULL;
}
}
m_pleaseUpdateAll = true;
m_karaokeEnded = karaokeEnded;
}
// set the DC to use
wxClientDC clientDcDontUse(this);
wxDC* dc;
if( m_pleaseUpdateAll )
{
dc = &m_offscreenDc;
}
else
{
dc = &clientDcDontUse;
}
/**********************************************************************
* DRAW!
**********************************************************************/
// redraw background?
if( m_pleaseUpdateAll )
{
m_karaokeModule->m_bg->DrawBackground(*dc);
}
// redraw karaoke?
if( karaokeEnded )
{
if( m_sjScreen
&& !m_sjScreen->Render(*dc, *(m_karaokeModule->m_bg), m_pleaseUpdateAll)
&& !m_karaokeMaster.HasKaraoke() )
{
delete m_sjScreen;
m_sjScreen = NULL;
if( !g_mainFrame->IsKioskStarted() /*no error messages in kiosk mode!*/
&& !g_mainFrame->IsStopped() )
{
m_sjScreen = new SjSjScreen(_("No lyrics found."), wxT(""), 0);
//.........这里部分代码省略.........