示例#1
0
void CStartupView::DrawSeparator(Gdiplus::Graphics &graphics)
{
   Gdiplus::Rect gdipRcLogoRegion;
   Gdiplus::Rect gdipRcButtonRegion;
   Gdiplus::Rect gdipRcBottomRegion;
   CalculateRegions(gdipRcLogoRegion, gdipRcButtonRegion, gdipRcBottomRegion);

   Gdiplus::Pen greyPen(Gdiplus::Color(255, 190, 190, 190), 1);

   // horizontal separator on the left side
   Gdiplus::Rect gdipRcLeftButtons;
   CalculateLeftButtonsRegion(gdipRcLeftButtons);
   int x1 = gdipRcLeftButtons.X + SEPARATOR_SPACE;
   int y1 = gdipRcLeftButtons.Y + BUTTON_TITLE_HEIGHT + BUTTON_SUBTITLE_HEIGHT + 
      2 * BUTTON_HEIGHT + SEPARATOR_HEIGHT/2.0;
   int x2 = gdipRcLeftButtons.X + gdipRcLeftButtons.Width - SEPARATOR_SPACE;
   int y2 = y1;
   graphics.DrawLine(&greyPen, x1, y1, x2, y2); 

   // vertical separator in the middle of the page
   x1 = gdipRcButtonRegion.X + gdipRcButtonRegion.Width / 2.0;
   y1 = gdipRcLeftButtons.Y + SEPARATOR_SPACE;
   x2 = x1;
   y2 = gdipRcLeftButtons.Y + gdipRcLeftButtons.Height - SEPARATOR_SPACE;
   graphics.DrawLine(&greyPen, x1, y1, x2, y2); 
}
void CPage_Node_Lane::DrawCentroidRadicalLines(CPaintDC *pDC, CRect PlotRect,bool bOriginAngle/*=true*/)
{
	CPen blackPen(PS_SOLID,0,RGB(0,0,0));
	CPen greyPen(PS_SOLID,2,RGB(128,128,128));
	CPen lanePen(PS_SOLID,1,RGB(0,0,0));
	CPen laneSelectedPen(PS_SOLID,2,RGB(255,0,0));

	CBrush  greyBrush(RGB(128,128,128)); 
	CBrush  whiteBrush(RGB(255,255,255)); 
	CBrush  redBrush(RGB(255,0,0)); 

	pDC->SetBkMode(TRANSPARENT);
	CPen *pOldPen = pDC->SelectObject(&blackPen);
	CBrush* pOldBrush = pDC->SelectObject(&whiteBrush);
	pDC->Rectangle(PlotRect);

	GDPoint cntPoint,lefttop,bottomright;
	CRect centerRect;

	cntPoint.x = 0.0;
	cntPoint.y = 0.0;
	int nRadius2 = m_Para.nCentroidRadius;
	lefttop.x = cntPoint.x - nRadius2;
	lefttop.y = cntPoint.y - nRadius2;
	bottomright.x = cntPoint.x + nRadius2;
	bottomright.y = cntPoint.y + nRadius2;
	
	pDC->SelectObject(&greyPen);
	pDC->SelectObject(&greyBrush);
	centerRect = CRect(NPtoSP(lefttop),NPtoSP(bottomright));
	pDC->Ellipse(centerRect);

	for(int i=0;i<m_LinkData.size();i++)
	{
		LinkRecord *pRecord = m_LinkData[i];
		pDC->SelectObject(&greyPen);
		DrawRadicalLine(pDC,pRecord,bOriginAngle);
		pDC->SelectObject(&lanePen);
		pDC->SelectObject(&greyBrush);
		DrawLanes(pDC,pRecord,bOriginAngle);
		pDC->SelectObject(&blackPen);
		if (pRecord->nLinkID == m_nSelectedLinkID)
			pDC->SelectObject(&redBrush);
		DrawLinkPinPoint(pDC,pRecord,bOriginAngle);
	}

	// draw selected link pin point

	pDC->SelectObject(pOldPen);
	pDC->SelectObject(pOldBrush);
	
}
示例#3
0
void CAudioLevelIndicator::OnPaint()
{
    CPaintDC dc(this);

    CRect rcClient;
    GetClientRect(&rcClient);


    UINT nPosition = 0;
    if (m_dAudioLevel >= 0 && m_dAudioLevel <= 1.0)
        nPosition = (int)(m_dAudioLevel*39);

    Gdiplus::Graphics graphics(dc);

    Gdiplus::REAL dScaleX = (Gdiplus::REAL)rcClient.Width() / 13.0;
    Gdiplus::REAL dScaleY = (Gdiplus::REAL)rcClient.Height() / 40.0;

    graphics.ScaleTransform(dScaleX, dScaleY);

    // Border
    Gdiplus::Pen greyPen(Gdiplus::Color(255, 109, 109, 109), 1);
    graphics.DrawLine(&greyPen, 0, 0, 0, rcClient.Height()-1);
    greyPen.SetColor(Gdiplus::Color(255, 168, 168, 168));
    graphics.DrawLine(&greyPen, 1, 0, rcClient.Width()-1, 0);
    greyPen.SetColor(Gdiplus::Color(255, 225, 225, 225));
    graphics.DrawLine(&greyPen, rcClient.Width()-1, 1, rcClient.Width()-1, rcClient.Height());
    greyPen.SetColor(Gdiplus::Color(255, 215, 215, 215));
    graphics.DrawLine(&greyPen, 1, rcClient.Height()-1, rcClient.Width()-2, rcClient.Height()-1);

    // Background
    Gdiplus::LinearGradientBrush linGrBrushRY(
        Gdiplus::Point(0, 1),
        Gdiplus::Point(0, 16),
        Gdiplus::Color(255, 124, 47, 47),
        Gdiplus::Color(255, 174, 165, 65));

    Gdiplus::REAL relativeIntensities[] = {0.0f, 0.5f, 1.0f};
    Gdiplus::REAL relativePositions[]   = {0.0f, 0.25f, 1.0f};
    linGrBrushRY.SetBlend(relativeIntensities, relativePositions, 3);

    Gdiplus::LinearGradientBrush linGrBrushYG(
        Gdiplus::Point(0, 16),
        Gdiplus::Point(0, 39),
        Gdiplus::Color(255, 174, 165, 65),
        Gdiplus::Color(255, 127, 188, 77));

    graphics.FillRectangle(&linGrBrushRY, 1, 1, 11, 16);
    graphics.FillRectangle(&linGrBrushYG, 1, 17, 11, 22);

    // highlighting
    if (nPosition > 0) {
        Gdiplus::LinearGradientBrush linGrBrushRYBright(
            Gdiplus::Point(0, 1),
            Gdiplus::Point(0, 16),
            Gdiplus::Color(255, 153, 0, 0),
            Gdiplus::Color(255, 219, 216, 0));

        linGrBrushRYBright.SetBlend(relativeIntensities, relativePositions, 3);

        Gdiplus::LinearGradientBrush linGrBrushYGBright(
            Gdiplus::Point(0, 16),
            Gdiplus::Point(0, 39),
            Gdiplus::Color(255, 219, 216, 0),
            Gdiplus::Color(255, 107, 233, 0));

        int nLowerPosition = nPosition >= 22 ? 0 : 22 - nPosition;
        graphics.FillRectangle(&linGrBrushYGBright, 1, 17+nLowerPosition, 11, 22-nLowerPosition);


        if (nPosition > 22) {
            int nUpperPosition = nPosition >= 39 ? 0 : 38 - nPosition;
            graphics.FillRectangle(&linGrBrushRYBright, 1, 1+nUpperPosition, 11, 16-nUpperPosition);
        }

        Gdiplus::REAL relativeIntensities2[] = {0.0f, 0.1f, 0.0f};
        Gdiplus::REAL relativePositions2[]   = {0.0f, 0.5f, 1.0f};

        Gdiplus::LinearGradientBrush linGrBrushWhiteL(
            Gdiplus::Point(1, 0),
            Gdiplus::Point(6, 0),
            Gdiplus::Color(0, 255, 255, 255),
            Gdiplus::Color(148, 255, 255, 255));

        Gdiplus::LinearGradientBrush linGrBrushWhiteR(
            Gdiplus::Point(6, 0),
            Gdiplus::Point(13, 0),
            Gdiplus::Color(148, 255, 255, 255),
            Gdiplus::Color(0, 255, 255, 255));

        int nUpperPosition = nPosition >= 39 ? 0 : 38 - nPosition;
        graphics.FillRectangle(&linGrBrushWhiteL, 1, 1+nUpperPosition, 6, 38-nUpperPosition);
        graphics.FillRectangle(&linGrBrushWhiteR, 7, 1+nUpperPosition, 6, 38-nUpperPosition);

        Gdiplus::Pen whitePen(Gdiplus::Color(255, 255, 255, 255), 1);
        graphics.DrawLine(&whitePen, 1, 1+nUpperPosition, 12, 1+nUpperPosition);

    }
}