MFC畫圖-logo-class2

效果圖:

步驟:

  • Step1:畫上立體2的框架
    在這裏插入圖片描述
    在這裏插入圖片描述

  • Step2:進行漸變顏色填充
    在這裏插入圖片描述
    在這裏插入圖片描述

void CFirstMFCLineView::OnLogoClass2()
{
	CBrush backBrush(RGB(255, 255, 255));
	CRect rect1(100, 60, 350, 330);
	m_pDC->GetClipBox(&rect1);
	//畫需要的區域
	m_pDC->PatBlt(rect1.left, rect1.top, rect1.Width(), rect1.Height(), PATCOPY);
	// TODO: 在此添加命令處理程序代碼
	CPen m_pen[20];
	CBrush m_brush[15];
	m_pen[0].CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
	m_pen[1].CreatePen(PS_SOLID, 1, RGB(255, 255, 255));
	m_brush[1].CreateSolidBrush(RGB(241, 147, 224));
	m_brush[2].CreateSolidBrush(RGB(249, 100, 200));
	m_brush[3].CreateSolidBrush(RGB(220, 144, 238));//1
	m_brush[4].CreateSolidBrush(RGB(200, 113, 236));//2
	m_brush[5].CreateSolidBrush(RGB(255, 255, 255));
	m_brush[6].CreateSolidBrush(RGB(151, 76, 215));//3

	m_pDC->SelectObject(m_pen[1]);
	//6號多邊形
	m_pDC->SelectObject(m_brush[3]);
	CPoint pt6[6] = { CPoint(975.5, 203.5),CPoint(1010,183.5) ,CPoint(1010,344),CPoint(900,409.5), CPoint(900, 353) ,CPoint(975.5,308.5) };
	m_pDC->Polygon(pt6, 6);
	gradient_fillcolor(1010, 183.5, 975.5, 362);
	gradient_fillcolor(900, 409.5, 975.5, 308.5);

	//2號多邊形
	m_pDC->SelectObject(m_brush[2]);
	CPoint pt2[4] = { CPoint(788, 183.5),CPoint(824, 203.5) ,CPoint(824, 256),CPoint(788, 236) };
	m_pDC->Polygon(pt2, 4);
	gradient_fillcolor(788, 183.5, 824, 256);

	//3號多邊形
	m_pDC->SelectObject(m_brush[3]);
	CPoint pt3[4] = { CPoint(824, 203.5),CPoint(900, 162) ,CPoint(900, 217),CPoint(824, 256) };
	m_pDC->Polygon(pt3, 4);
	gradient_fillcolor(900, 162, 824, 256);

	//1號多邊形
	m_pDC->SelectObject(m_brush[3]);
	CPoint pt1[6] = { CPoint(788, 183.5),CPoint(900, 120) ,CPoint(1010, 183.5),CPoint(975.5, 203.5), CPoint(900, 162) ,CPoint(824, 203.5) };
	m_pDC->Polygon(pt1, 6);

	//8號多邊形
	CPoint pt8[4] = { CPoint(900, 463),CPoint(1010,402.5) ,CPoint(1010,458.5),CPoint(900,520) };
	m_pDC->Polygon(pt8, 4);
	gradient_fillcolor(1010, 402.5, 900, 520);


	//4號多邊形
	m_pDC->SelectObject(m_brush[4]);
	CPoint pt4[6] = { CPoint(900, 162),CPoint(975.5, 203.5) ,CPoint(975.5, 308.5),CPoint(941.5, 289.5), CPoint(941.5, 236) ,CPoint(900,217) };
	m_pDC->Polygon(pt4, 6);
	//5號多邊形
	m_pDC->SelectObject(m_brush[3]);
	CPoint pt5[6] = { CPoint(824, 269),CPoint(900,315) ,CPoint(941.5, 289.5),CPoint(975.5, 308.5), CPoint(900, 353) ,CPoint(788,290.5) };
	m_pDC->Polygon(pt5, 6);

	//7號多邊形
	m_pDC->SelectObject(m_brush[4]);
	CPoint pt7[8] = { CPoint(788,290.5),CPoint(900,353) ,CPoint(900,409.5),CPoint(822.5,362), CPoint(822.5,423.5) ,CPoint(900,463), CPoint(900,520) ,CPoint(788,455) };
	m_pDC->Polygon(pt7, 8);

	//9號多邊形
	m_pDC->SelectObject(m_brush[3]);
	CPoint pt9[6] = { CPoint(822.5,423.5),CPoint(859,401.5) ,CPoint(900,421.5),CPoint(975.5,381), CPoint(1010,402.5) ,CPoint(900,463) };
	m_pDC->Polygon(pt9, 6);

	//10號多邊形
	m_pDC->SelectObject(m_brush[6]);
	CPoint pt10[4] = { CPoint(822.5,362),CPoint(859,383) ,CPoint(859,401.5),CPoint(822.5,423.5) };
	m_pDC->Polygon(pt10, 4);

	m_pDC->SelectObject(m_pen[1]);
	m_pDC->SelectObject(m_brush[5]);
	
	CPoint clear1[3] = { CPoint(900,520),CPoint(1010,458.5) ,CPoint(1035,531) };
	m_pDC->Polygon(clear1, 3);

	CPoint clear2[5] = { CPoint(900,409.5),CPoint(900,421.5) ,CPoint(975.5,381),CPoint(1017,366),CPoint(1010,344) };
	m_pDC->Polygon(clear2, 5);

	CPoint clear3[3] = { CPoint(788,236),CPoint(824,256) ,CPoint(784,268) };
	m_pDC->Polygon(clear3, 3);

	CPoint clear4[3] = { CPoint(900, 217),CPoint(824, 256) ,CPoint(900,256) };
	m_pDC->Polygon(clear4, 3);

	CPoint clear5[3] = { CPoint(900, 315), CPoint(941.5, 289.5), CPoint(900, 280) };
	m_pDC->Polygon(clear5, 3);
}
void CFirstMFCLineView::gradient_fillcolor(int x1, int y1, int x2, int y2)
{
	//CRect m_rcClient;
	//得到客戶區域的填充矩形
	//GetClientRect(&m_rcClient);
	//int nWidth = m_rcClient.Width();
	//int nHeight = m_rcClient.Height();
	TRIVERTEX        vert[4];
	GRADIENT_RECT    gRect;
	//b972ff
	vert[0].x = x1;
	vert[0].y = y1;
	vert[0].Red = 0xb900;
	vert[0].Green = 0x7000;
	vert[0].Blue = 0xff00;
	vert[0].Alpha = 0x0000;
	vert[1].x = x2;
	vert[1].y = y2;
	//f965c9
	vert[1].Red = 0xf900;
	vert[1].Green = 0x6500;
	vert[1].Blue = 0xc900;
	vert[1].Alpha = 0x0000;
	gRect.UpperLeft = 0;
	gRect.LowerRight = 1;
	GradientFill(m_pDC->GetSafeHdc(), vert, 2, &gRect, 1, GRADIENT_FILL_RECT_H);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章