Пример #1
0
void BitmapControl::OnDraw(CDC* dc)
{
  RECT r;
  GetClientRect(&r);
  int w1 = r.right - r.left;
  int h1 = r.bottom - r.top;
  CDC memDC;
  memDC.CreateCompatibleDC(dc);
  if(!stretch) {
    if(w > w1)
      w1 = w;
    if(h > h1)
      h1 = h;
  }
  CBitmap bitmap, *pOldBitmap;
  bitmap.CreateCompatibleBitmap(dc, w1, h1);
  pOldBitmap = memDC.SelectObject(&bitmap);
  if(stretch) {
    bmpInfo->bmiHeader.biWidth = w;
    bmpInfo->bmiHeader.biHeight = -h;

    StretchDIBits(memDC.GetSafeHdc(),
                  0,
                  0,
                  w1,
                  h1,
                  0,
                  0,
                  w,
                  h,
                  data,
                  bmpInfo,
                  DIB_RGB_COLORS,
                  SRCCOPY);
  } else {
    FillOutsideRect(&memDC, CBrush::FromHandle(GetSysColorBrush(COLOR_BTNFACE)));

    bmpInfo->bmiHeader.biWidth = w;
    bmpInfo->bmiHeader.biHeight = -h;
    SetDIBitsToDevice(memDC.GetSafeHdc(),
                      0,
                      0,
                      w,
                      h,
                      0,
                      0,
                      0,
                      h,
                      data,
                      bmpInfo,
                      DIB_RGB_COLORS);
  }

  dc->BitBlt(0,0,w1,h1,
             &memDC,0,0,SRCCOPY);
  memDC.SelectObject(pOldBitmap);

  bitmap.DeleteObject();
  memDC.DeleteDC();
}
Пример #2
0
BOOL CBigScrollView::OnEraseBkgnd(wxDC* pDC) 
{
	wxRect rectClient;
	GetClientRect(&rectClient);
	wxBrush BackGround(m_colorBackGnd);
	// if client area is larger than total device size
	wxPoint pointOrg = GetDeviceOrg();
	if (pointOrg != wxPoint(0, 0))
		FillOutsideRect(pDC, &BackGround);
	else
		pDC->FillRect(rectClient, &BackGround);
	return TRUE;
}
Пример #3
0
// Overide OnEraseBkgnd() to clear area outside view but not bits
// were going to repaint.
//
BOOL CTextureView::OnEraseBkgnd(CDC* pDC) 
{
	CBTEditDoc* pDoc = GetDocument();
	CBrush br(RGB(0,0,0));

	switch(pDoc->GetTVMode()) {
		case MTV_TEXTURES:
			FillOutsideRect( pDC, &br );

			return TRUE;	// Erased
		default:
			return CWnd::OnEraseBkgnd(pDC);
	}
}
Пример #4
0
BOOL CAutoPFAView::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	//CScrollView::OnEraseBkgnd(pDC);
	CAutoPFADoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	/*
    wndbkBrush.CreateSolidBrush(RGB(128,128,128));
    wndbkBrush.DeleteObject();
    */

	CBrush wndbkBrush;
    wndbkBrush.CreateSolidBrush(pDoc->m_workSpaceRef.GetbkColor());
	FillOutsideRect(pDC,&wndbkBrush);//把组件范围外的区域也刷成客户区域背景颜色,这样看起来不会闪屏
	CRect rc(CPoint(0,0),GetTotalSize());
    pDC->FillRect(rc, &wndbkBrush);
	wndbkBrush.DeleteObject();
    return TRUE;
}
BOOL COXImageViewer::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	
	ASSERT_VALID(pDC);

	CBrush brush(m_clrBackground);

	//Bug-fix - by Nish - Mar 9th, 2005
 	if(IsEmpty())
	{
		CRect rect;
		GetClientRect(&rect);
		pDC->FillRect(&rect,&brush);
	}
 	else
		FillOutsideRect(pDC,&brush);	

	return TRUE;
}