void CDisplayWindow::PatchBackground(HDC hdc,RECT *rc,RECT *UpdateRect) { HDC hdcMem = CreateCompatibleDC(hdc); HBITMAP hBitmap = CreateCompatibleBitmap(hdc,rc->right-rc->left,rc->bottom-rc->top); HGDIOBJ hOriginalObject = SelectObject(hdcMem,hBitmap); /* Draw the stored background on top of the patched area. */ BitBlt(hdcMem,UpdateRect->left,UpdateRect->top,rc->right,rc->bottom,m_hdcBackground, UpdateRect->left,UpdateRect->top,SRCCOPY); PaintText(hdcMem,m_LeftIndent); DrawIconEx(hdcMem,MAIN_ICON_LEFT,MAIN_ICON_TOP,m_hMainIcon, MAIN_ICON_WIDTH,MAIN_ICON_HEIGHT,NULL,NULL,DI_NORMAL); if(m_bShowThumbnail) { DrawThumbnail(hdcMem); } BitBlt(hdc,UpdateRect->left,UpdateRect->top,rc->right,rc->bottom,hdcMem, UpdateRect->left,UpdateRect->top,SRCCOPY); SelectObject(hdcMem,hOriginalObject); DeleteObject(hBitmap); DeleteDC(hdcMem); }
void PrettyImage::paintEvent(QPaintEvent*) { // Draw at the bottom of our area QRect image_rect(QPoint(0, 0), image_size()); image_rect.moveBottom(kImageHeight); QPainter p(this); // Draw the main image DrawThumbnail(&p, image_rect); // Draw the reflection // Figure out where to draw it QRect reflection_rect(image_rect); reflection_rect.moveTop(image_rect.bottom()); // Create the reflected pixmap QImage reflection(reflection_rect.size(), QImage::Format_ARGB32_Premultiplied); reflection.fill(palette().color(QPalette::Base).rgba()); QPainter reflection_painter(&reflection); // Set up the transformation QTransform transform; transform.scale(1.0, -1.0); transform.translate(0.0, -reflection_rect.height()); reflection_painter.setTransform(transform); QRect fade_rect(reflection.rect().bottomLeft() - QPoint(0, kReflectionHeight), reflection.rect().bottomRight()); // Draw the reflection into the buffer DrawThumbnail(&reflection_painter, reflection.rect()); // Make it fade out towards the bottom QLinearGradient fade_gradient(fade_rect.topLeft(), fade_rect.bottomLeft()); fade_gradient.setColorAt(0.0, QColor(0, 0, 0, 0)); fade_gradient.setColorAt(1.0, QColor(0, 0, 0, 128)); reflection_painter.setCompositionMode( QPainter::CompositionMode_DestinationIn); reflection_painter.fillRect(fade_rect, fade_gradient); reflection_painter.end(); // Draw the reflection on the image p.drawImage(reflection_rect, reflection); }
BOOL LocalPictureManager::DrawThumbnail(InfoItemTypeEnum iit, UINT itemID, HDC hdc, RECT& rcDest) { return DrawThumbnail(iit, itemID, Gdiplus::Graphics(hdc), Gdiplus::Rect(rcDest.left, rcDest.top, rcDest.right - rcDest.left, rcDest.bottom - rcDest.top)); }