Beispiel #1
0
void CpermoDlg::DrawBackground(CDC* pDC)
{
	CPen MyPen(PS_SOLID, 1, RGB(255, 255, 255));
	switch (nSkin)
	{
	case IDM_GREEN:
		{
			CBrush RLBrush(RGB(2, 200, 20));
			CBrush MiBrush(RGB(150, 240, 150));
			CPen *pOldPen = pDC->SelectObject(&MyPen);
			CBrush *pOldBrush = pDC->SelectObject(&MiBrush);
			//画边框和竖线
			pDC->Rectangle(0, 0, 220, 22);
			pDC->MoveTo(35, 0);
			pDC->LineTo(35, 22);
			pDC->MoveTo(185, 0);
			pDC->LineTo(185, 22);
			//选择不带边框的画笔
			pDC->SelectStockObject(NULL_PEN);
			pDC->SelectObject(&RLBrush);
			//左侧矩形
			pDC->Rectangle(1, 1, 36, 22);
			//右侧矩形
			pDC->Rectangle(186, 1, 220, 22);

			pDC->SelectObject(pOldPen);
			pDC->SelectObject(pOldBrush);
		}
		break;
	case IDM_BLUE:
		{
			CBrush RLBrush(RGB(26, 160, 225));
			CBrush MiBrush(RGB(66, 66, 66));
			CPen *pOldPen = pDC->SelectObject(&MyPen);
			CBrush *pOldBrush = pDC->SelectObject(&MiBrush);
			//画边框和竖线
			pDC->Rectangle(0, 0, 220, 22);
			pDC->MoveTo(35, 0);
			pDC->LineTo(35, 22);
			pDC->MoveTo(185, 0);
			pDC->LineTo(185, 22);
			//选择不带边框的画笔
			pDC->SelectStockObject(NULL_PEN);
			pDC->SelectObject(&RLBrush);
			//左侧矩形
			pDC->Rectangle(1, 1, 36, 22);
			//右侧矩形
			pDC->Rectangle(186, 1, 220, 22);

			pDC->SelectObject(pOldPen);
			pDC->SelectObject(pOldBrush);
		}
		break;
	case IDM_BLACK:
		{
			CBrush RLBrush(RGB(50, 50, 50));
			CBrush MiBrush(RGB(100, 100, 100));
			CPen *pOldPen = pDC->SelectObject(&MyPen);
			CBrush *pOldBrush = pDC->SelectObject(&MiBrush);
			//画边框和竖线
			pDC->Rectangle(0, 0, 220, 22);
			pDC->MoveTo(35, 0);
			pDC->LineTo(35, 22);
			pDC->MoveTo(185, 0);
			pDC->LineTo(185, 22);
			//选择不带边框的画笔
			pDC->SelectStockObject(NULL_PEN);
			pDC->SelectObject(&RLBrush);
			//左侧矩形
			pDC->Rectangle(1, 1, 36, 22);
			//右侧矩形
			pDC->Rectangle(186, 1, 220, 22);

			pDC->SelectObject(pOldPen);
			pDC->SelectObject(pOldBrush);
		}
		break;
	case IDM_RED:
		{
			CBrush RLBrush(RGB(180, 20, 20));
			CBrush MiBrush(RGB(240, 150, 150));
			CPen *pOldPen = pDC->SelectObject(&MyPen);
			CBrush *pOldBrush = pDC->SelectObject(&MiBrush);
			//画边框和竖线
			pDC->Rectangle(0, 0, 220, 22);
			pDC->MoveTo(35, 0);
			pDC->LineTo(35, 22);
			pDC->MoveTo(185, 0);
			pDC->LineTo(185, 22);
			//选择不带边框的画笔
			pDC->SelectStockObject(NULL_PEN);
			pDC->SelectObject(&RLBrush);
			//左侧矩形
			pDC->Rectangle(1, 1, 36, 22);
			//右侧矩形
			pDC->Rectangle(186, 1, 220, 22);

			pDC->SelectObject(pOldPen);
			pDC->SelectObject(pOldBrush);
		}
		break;
	case IDM_ORANGE:
		{
			CBrush RLBrush(RGB(230, 100, 25));
			CBrush MiBrush(RGB(250, 230, 20));
			CPen *pOldPen = pDC->SelectObject(&MyPen);
			CBrush *pOldBrush = pDC->SelectObject(&MiBrush);
			//画边框和竖线
			pDC->Rectangle(0, 0, 220, 22);
			pDC->MoveTo(35, 0);
			pDC->LineTo(35, 22);
			pDC->MoveTo(185, 0);
			pDC->LineTo(185, 22);
			//选择不带边框的画笔
			pDC->SelectStockObject(NULL_PEN);
			pDC->SelectObject(&RLBrush);
			//左侧矩形
			pDC->Rectangle(1, 1, 36, 22);
			//右侧矩形
			pDC->Rectangle(186, 1, 220, 22);
			pDC->SelectObject(pOldPen);
			pDC->SelectObject(pOldBrush);
		}
		break;
	default:
		{
			CBrush RLBrush(RGB(2, 200, 20));
			CBrush MiBrush(RGB(150, 240, 150));
			CPen *pOldPen = pDC->SelectObject(&MyPen);
			CBrush *pOldBrush = pDC->SelectObject(&MiBrush);
			//画边框和竖线
			pDC->Rectangle(0, 0, 220, 22);
			pDC->MoveTo(35, 0);
			pDC->LineTo(35, 22);
			pDC->MoveTo(185, 0);
			pDC->LineTo(185, 22);
			//选择不带边框的画笔
			pDC->SelectStockObject(NULL_PEN);
			pDC->SelectObject(&RLBrush);
			//左侧矩形
			pDC->Rectangle(1, 1, 36, 22);
			//右侧矩形
			pDC->Rectangle(186, 1, 220, 22);
			pDC->SelectObject(pOldPen);
			pDC->SelectObject(pOldBrush);
		}
		break;
	}
	//以下三句可以不要,局部变量会进行析构
	// 	WhitePen.DeleteObject();
	// 	GreenBrush.DeleteObject();
	// 	WhiteBrush.DeleteObject();
}
Beispiel #2
0
BOOL ColourDragInformation::OnDrawSolidDrag(wxPoint Origin, wxDC *TheDC)
{
	// set up gbrush
//	CPalette * OldPal = NULL;
//	if (PaletteManager::UsePalette())
//	{
//		OldPal = PaletteManager::StartPaintPalette( TheDC );
//	}

	GBrush GDrawBrush;
	GDrawBrush.Init(TheDC);
	GDrawBrush.Start();

	// get a gbrush brush
	Document *ScopeDoc = Document::GetSelected();
	ERROR2IF(ScopeDoc == NULL, FALSE, "No Selected Doc !");

	wxBrush* pDragBrush = new wxBrush;
	
	BOOL BrushCreate = TRUE;

	if (pDragBrush != NULL )
	{
		if (TheColour.IsTransparent())
		{
//			TheDC->SetBkColor(RGB(255,255,255));		// ensure white background
			pDragBrush->SetStyle(wxCROSSDIAG_HATCH);
			pDragBrush->SetColour(wxColour(0,0,0));		// Fill with black/white cross hatch
		}
		else
		{
			DWORD ScreenWord;

			ColourContextRGBT *CCrgbt = (ColourContextRGBT *)
						ColourManager::GetColourContext(COLOURMODEL_RGBT, DocView::GetSelected());
			ScreenWord = ConvertColourToScreenWord(CCrgbt, &TheColour);

			// create the Brush and	Pen
			if (GDrawBrush.Available())
			{
				GDrawBrush.GetLogBrush((COLORREF)ScreenWord, pDragBrush);
			}
			else
				pDragBrush->SetColour((COLORREF)ScreenWord);
		}

		wxPen MyPen(wxColour(0,0,0));

		// Set the brush origin so the dither (or Hatch) patterns
		// don't move around as you drag.
//		TheDC->SetBrushOrg(Origin.x, Origin.y);
		
		//the rectangle to draw into
		wxRect DrawRect(Origin.x, Origin.y, SolidDragSize.x-1, SolidDragSize.y-1);

		// select brushes and pens ..
		TheDC->SetBrush(*pDragBrush);
		TheDC->SetPen(MyPen);

		// draw the thingy. In this case, it's a colour patch, circular for a spot colour, else a square
#ifndef WEBSTER // don't distinguish spots in Webster Martin 15/07/97
		if (!TheColour.IsTransparent() && TheColour.GetSpotParent() != NULL)
 			TheDC->DrawEllipse(DrawRect);
 		else
#endif // WEBSTER
 			TheDC->DrawRectangle(DrawRect);
		    						
    	// clean up the dc
    	TheDC->SetBrush(wxNullBrush);
		TheDC->SetPen(wxNullPen);

    	// delete the objects
		delete pDragBrush;
	}
	else
		BrushCreate = FALSE;
	
	// Finish with GBrush
	GDrawBrush.Stop();
//	if (OldPal)
//		PaletteManager::StopPaintPalette(TheDC, OldPal);
	
	// problems !!!
	ERROR2IF(!BrushCreate, FALSE, "Failed to make a solid drag brush!");

	return TRUE;
}