void CCalendarCtrl::OnPaint() { CPaintDC dc(this); CRect rc; GetClientRect(&rc); CDC MemDC; MemDC.CreateCompatibleDC(&dc); CBitmap MemBitmap; MemBitmap.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height()); CBitmap *pOldBitmap = MemDC.SelectObject(&MemBitmap); CBrush brBkGnd; brBkGnd.CreateSolidBrush(RGB(252,255,255)); MemDC.FillRect(&rc ,&brBkGnd); MemDC.SetBkMode(TRANSPARENT); // Draw calendar elements DrawHeader(&MemDC); DrawCells(&MemDC); DrawGrid(&MemDC); // Render dc.BitBlt(rc.left, rc.top, rc.Width(), rc.Height(), &MemDC, 0, 0, SRCCOPY); MemDC.SelectObject(pOldBitmap); }
void DrawGame(GameRenderer* g, World* world) { CheckResize(g, world); //Prepare to render to texture. SDL_SetRenderTarget(g->renderer, g->gameTexture); //Clear screen SDL_SetRenderDrawColor( g->renderer, 0xFF, 0xFF, 0xFF, 0xFF ); SDL_RenderClear( g->renderer ); //Draw our grid //Resizing the background grid looks terrible. if(g->zoom >= 0) { DrawBackgroundGrid( g->renderer, g->screenGame.w, g->screenGame.h, &g->gridProps ); } DrawCells(g->renderer, &g->gridProps, world); SDL_RenderPresent( g->renderer ); //Now draw the rest of the screen SDL_SetRenderTarget(g->renderer, NULL); SDL_SetRenderDrawColor( g->renderer, 180, 180, 180, 255 ); SDL_RenderClear( g->renderer ); SDL_RenderCopy(g->renderer, g->gameTexture, NULL, &(g->screenGame)); //Draw the ring of greyed-out game areas around our game area, to represent world wrapping to the user. SDL_SetTextureColorMod(g->gameTexture, 240, 240, 240); int startX = g->screenGame.x - g->screenGame.w; int startY = g->screenGame.y - g->screenGame.h; SDL_Rect current; current.w = g->screenGame.w; current.h = g->screenGame.h; for(int iterX = 0; iterX < 3; ++iterX) { for(int iterY = 0; iterY < 3; ++iterY) { //Don't draw over primary game area. if( ! ((iterX == 1) && (iterY == 1))) { current.x = startX + (current.w * iterX); current.y = startY + (current.h * iterY); SDL_RenderCopy(g->renderer, g->gameTexture, NULL, ¤t); } } } SDL_SetTextureColorMod(g->gameTexture, 255, 255, 255); SDL_RenderPresent(g->renderer); }