void MaterialWindow::OnPaint(wxPaintEvent &WXUNUSED(event)) { wxBufferedPaintDC bpdc(this); wxGCDC gdc; wxGraphicsRenderer* const renderer = wxGraphicsRenderer::GetDefaultRenderer(); wxGraphicsContext* context; if ( wxMemoryDC *memdc = wxDynamicCast(&bpdc, wxMemoryDC) ) { context = renderer->CreateContext(*memdc); } gdc.SetGraphicsContext(context); // Draw Background gdc.SetBackground(wxBrush(wxColour(38, 38, 38))); gdc.Clear(); // Draw Background Grid int gridOffsetX = (int)mWindowX % 20; int gridOffsetY = (int)mWindowY % 20; gdc.SetPen(wxPen( wxColour(128, 128, 128, 128), 1) ); wxSize windowSize = GetSize(); // Vertical Lines for(int x = 0; x < (windowSize.x + 40); x += 20) gdc.DrawLine(gridOffsetX + x - 20, gridOffsetY - 20, gridOffsetX + x - 20, gridOffsetY + windowSize.y + 40); // Horizontal Lines for(int y = 0; y < (windowSize.y + 40); y += 20) gdc.DrawLine(gridOffsetX - 20, gridOffsetY + y - 20, gridOffsetX + windowSize.x + 40, gridOffsetY + y - 20); // Draw Nodes for(S32 n = 0; n < nodeList.size(); ++n ) { Node* node = &nodeList[n]; drawNode(gdc, node); } // Draw Connections for(S32 n = 0; n < connectionList.size(); ++n ) { Connection* connection = &connectionList[n]; drawConnection(gdc, context, connection); } }
void CScrollBar::OnPaint(wxPaintEvent& WXUNUSED(event)) { int w, h, aw, ah, new_aw, new_ah, tw, th, new_tw, new_th, tx, prev_tx = m_rcSBT.x, dr; wxBitmap newSBLA, newSBRA, newSBT, newSBLC, newSBRC; bool isRes = false; this->GetClientSize(&w, &h); //wxPaintDC dc( this ); wxBitmap bmp(w, h); wxMemoryDC dc(bmp); aw = m_SBLA.GetWidth(); ah = m_SBLA.GetHeight(); new_ah = h; new_aw = (int)((double)(aw*new_ah)/(double)ah); tw = m_SBT.GetWidth(); th = m_SBT.GetHeight(); new_th = h; new_tw = (int)((double)(tw*new_th)/(double)th); dr = w - 2*new_aw - new_tw; tx = new_aw + (int)((double)((m_pos-m_min_pos)*dr)/(double)m_range); m_rcSBLA.x = 0; m_rcSBLA.y = 0; m_rcSBLA.width = new_aw; m_rcSBLA.height = new_ah; m_rcSBRA.x = w-new_aw; m_rcSBRA.y = 0; m_rcSBRA.width = new_aw; m_rcSBRA.height = new_ah; m_rcSBLC.x = new_aw; m_rcSBLC.y = 0; m_rcSBLC.width = tx-new_aw; m_rcSBLC.height = h; m_rcSBT.x = tx; m_rcSBT.y = 0; m_rcSBT.width = new_tw; m_rcSBT.height = new_th; m_rcSBRC.x = tx+new_tw; m_rcSBRC.y = 0; m_rcSBRC.width = w-(tx+new_tw)-new_aw; m_rcSBRC.height = h; newSBLA = wxBitmap(m_SBLA.Scale(m_rcSBLA.width, m_rcSBLA.height, wxIMAGE_QUALITY_HIGH)); if (m_rcSBLC.width > 0) { newSBLC = wxBitmap(m_SBLC.Scale(m_rcSBLC.width, m_rcSBLC.height, wxIMAGE_QUALITY_HIGH)); } newSBT = wxBitmap(m_SBT.Scale(m_rcSBT.width, m_rcSBT.height, wxIMAGE_QUALITY_HIGH)); if (m_rcSBRC.width > 0) { newSBRC = wxBitmap(m_SBRC.Scale(m_rcSBRC.width, m_rcSBRC.height, wxIMAGE_QUALITY_HIGH)); } newSBRA = wxBitmap(m_SBRA.Scale(m_rcSBRA.width, m_rcSBRA.height, wxIMAGE_QUALITY_HIGH)); dc.DrawBitmap(newSBLA, m_rcSBLA.x, m_rcSBLA.y); if (m_rcSBLC.width > 0) { dc.DrawBitmap(newSBLC, m_rcSBLC.x, m_rcSBLC.y); } dc.DrawBitmap(newSBT, m_rcSBT.x, m_rcSBT.y); if (m_rcSBRC.width > 0) { dc.DrawBitmap(newSBRC, m_rcSBRC.x, m_rcSBRC.y); } dc.DrawBitmap(newSBRA, m_rcSBRA.x, m_rcSBRA.y); wxBufferedPaintDC bpdc(this, bmp); }