本文整理汇总了C++中CDrawingObject::Paint方法的典型用法代码示例。如果您正苦于以下问题:C++ CDrawingObject::Paint方法的具体用法?C++ CDrawingObject::Paint怎么用?C++ CDrawingObject::Paint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CDrawingObject
的用法示例。
在下文中一共展示了CDrawingObject::Paint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WndProc
// The code below is from the wizard but it has been customized for this
// application. There is a custom code to handle WM_SIZE, WM_GESTURENOTIFY
// and WM_GESTURE messages.
//
// Processes messages for the main window:
// WM_COMMAND - process the application menu
// WM_SIZE - process resizing of client window
// WM_PAINT - paint the main window
// WM_DESTROY - post a quit message and return
// WM_GESTURENOTIFY - process a gesture notification message
// WM_GESTURE - process the gesture command
// in:
// hWnd window handle
// message message code
// wParam message parameter (message-specific)
// lParam message parameter (message-specific)
// returns:
// the result of the message processing and depends on the message sent
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_GESTURENOTIFY:
{
// This is the right place to define the list of gestures that this
// application will support. By populating GESTURECONFIG structure
// and calling SetGestureConfig function. We can choose gestures
// that we want to handle in our application. In this app we
// decide to handle all gestures.
GESTURECONFIG gc = {
0, // gesture ID
GC_ALLGESTURES, // settings related to gesture ID that are to be
// turned on
0 // settings related to gesture ID that are to be
// turned off
};
BOOL bResult = SetGestureConfig(
hWnd, // window for which configuration is specified
0, // reserved, must be 0
1, // count of GESTURECONFIG structures
&gc, // array of GESTURECONFIG structures, dwIDs will be processed in the
// order specified and repeated occurances will overwrite previous ones
sizeof(GESTURECONFIG) // sizeof(GESTURECONFIG)
);
if (!bResult)
{
ASSERT(L"Error in execution of SetGestureConfig" && 0);
}
}
break;
case WM_GESTURE:
// The gesture processing code is implemented in the CGestureEngine
// class.
return g_cGestureEngine.WndProc(hWnd,wParam,lParam);
break;
case WM_SIZE:
// resize rectangle and place it in the middle of the new client area
g_cRect.ResetObject(LOWORD(lParam),HIWORD(lParam));
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// Full redraw: background + rectangle
g_cRect.Paint(hdc);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
示例2: OnDraw
void CTinyCadView::OnDraw(CDC* pDC)
{
//CTinyCadDoc* pDoc = GetCurrentDocument();
CDC BitmapDC;
CBitmap *old_bitmap = NULL;
int selected;
CRect client;
if (pDC->IsKindOf(RUNTIME_CLASS(CPaintDC)))
{
client = static_cast<CPaintDC*> (pDC)->m_ps.rcPaint;
}
else
{
GetClientRect(&client);
}
// Are we going to use off-screen drawing?
BOOL osb = !pDC->IsPrinting() && m_use_offscreen_drawing && CreateBitmap(*pDC, client.Width(), client.Height());
if (osb)
{
BitmapDC.CreateCompatibleDC(pDC);
old_bitmap = BitmapDC.SelectObject(&m_bitmap);
}
{
CContext dc(osb ? &BitmapDC : pDC, GetTransform(), this);
CDPoint origin = GetTransform().GetOrigin();
if (osb)
{
CPoint point = CPoint(-client.left, -client.top);
dc.SetPixelOffset(point);
}
if (pDC->IsPrinting())
{
dc.SetBlack(CTinyCadRegistry::GetPrintBandW());
}
CDPoint Start, End;
CRect rect;
GetClientRect(&rect);
TransformSnap snap;
snap.SetGridSnap(FALSE);
Start = GetTransform().DeScale(snap, CPoint(rect.left, rect.top));
End = GetTransform().DeScale(snap, CPoint(rect.right, rect.bottom));
// Is any of this region in the off-page area?
if (!pDC->IsPrinting())
{
// Paint the region white
if (pDC->IsPrinting())
{
dc.SelectBrush(cWHITE);
dc.SelectPen(PS_SOLID, 1, cWHITE);
}
else
{
COLORREF col = GetCurrentDocument()->GetOptions()->GetUserColor().Get(CUserColor::BACKGROUND);
dc.SelectBrush(col, 0);
dc.SelectPen(PS_SOLID, 1, col);
}
dc.Rectangle(CDRect(Start.x - 2, Start.y - 2, End.x + 2, End.y + 2));
dc.SelectBrush(cOFFPAGE);
dc.SelectPen(PS_SOLID, 1, cOFFPAGE);
if (End.x > GetCurrentDocument()->GetDetails().GetPageBoundsAsPoint().x)
{
CDPoint a = CDPoint(GetCurrentDocument()->GetDetails().GetPageBoundsAsPoint().x, 0);
dc.Rectangle(CDRect(a.x, a.y, End.x, End.y));
}
if (End.y > GetCurrentDocument()->GetDetails().GetPageBoundsAsPoint().y)
{
CDPoint a = CDPoint(Start.x, GetCurrentDocument()->GetDetails().GetPageBoundsAsPoint().y);
dc.Rectangle(CDRect(a.x, a.y, End.x, End.y));
}
if (Start.x < 0) dc.Rectangle(CDRect(0, Start.y, Start.x, End.y));
if (Start.y < 0) dc.Rectangle(CDRect(Start.x, 0, End.x, Start.y));
// Fill this region with a grid
double grid = GetCurrentDocument()->m_snap.GetGrid();
double SGrid = dc.GetTransform().doubleScale(grid);
if (GetCurrentDocument()->GetOptions()->ShowGrid() && SGrid > 10)
{
double x = dc.GetTransform().GetOrigin().x;
double y = dc.GetTransform().GetOrigin().y;
TransformSnap s = GetCurrentDocument()->m_snap;
s.SetGridSnap(TRUE);
x = s.Snap(x);
y = s.Snap(y);
for (double xp = x >= 0 ? x : 0; xp < End.x && xp < GetCurrentDocument()->GetDetails().GetPageBoundsAsPoint().x; xp += grid)
//.........这里部分代码省略.........