void CGumpView::OnDraw(CDC* pDC) { CDocument* pDoc = GetDocument(); // TODO: 여기에 그리기 코드를 추가합니다. if (!m_pDib) return; CRect rect; GetClientRect(rect); CSize sizeWnd = rect.Size(); CSize sizeDib = m_pDib->GetDimensions(); if (sizeDib.cx <= 0 || sizeDib.cy <= 0) return; double ratio = min(float(sizeWnd.cx) / sizeDib.cx, float(sizeWnd.cy) / sizeDib.cy); if (ratio < 1.0) { sizeDib = CSize(int(sizeDib.cx * ratio), int(sizeDib.cy * ratio)); } CPoint point; point.x = max(0, sizeWnd.cx /2 - sizeDib.cx/2); point.y = max(0, sizeWnd.cy /2 - sizeDib.cy/2); CRect rcBound(point.x-1, point.y-1, point.x+sizeDib.cx+1, point.y+sizeDib.cy+1); CPen pen(PS_DOT, 1, RGB(128,128,128)); CPen* pOld = pDC->SelectObject(&pen); pDC->Rectangle(rcBound); pDC->SelectObject(pOld); m_pDib->Draw(pDC, point, sizeDib); }
void CWizShadowEffect::draw(QPainter *painter) { PixmapPadMode mode = PadToEffectiveBoundingRect; if (painter->paintEngine()->type() == QPaintEngine::OpenGL2) mode = NoPad; // Draw pixmap in device coordinates to avoid pixmap scaling. QPoint offset(0, 0); const QPixmap pixmap = sourcePixmap(Qt::DeviceCoordinates, &offset, mode); if (pixmap.isNull()) return; // QTransform restoreTransform = painter->worldTransform(); painter->setWorldTransform(QTransform()); painter->setBrush(QBrush(Qt::NoBrush)); QSize sz = pixmap.size(); painter->drawPixmap(offset.x(), offset.y(), pixmap); // QRect rcBound(offset.x() - 1, offset.y() - 1, sz.width() + 1, sz.height() + 1); m_shadow->DrawBorder(painter, rcBound); // painter->setWorldTransform(restoreTransform); }