都是之前的一些代碼,今天回頭整理的時候,看到一些有些用的東西。在作SCADA的時候,所涉及的繪製對象,有立體管道。下面的代碼,就是使用GDI來繪製3D立體管道的。下面是核心代碼(略顯冗餘),若是使用,稍做修改便可。ide
void Draw(CDC *PDC)
{
int pointNum = m_PointArray.GetSize();
//Draw figure
CPoint* tmpPoint= (CPoint*) new CPoint[pointNum];
CSize tmpSize(m_nOrgX, m_nOrgY);
for(int Index = 0; Index < pointNum; Index++)
tmpPoint[Index] = m_PointArray[Index] + tmpSize; 對象
COLORREF C1 = RGB(1, 69, 142); //m_LineColor資源
COLORREF C2 = RGB(255, 255, 255); //m_BrushColorit
float f;
int i, count = 5;
count += m_LineWidth;//增長線寬,從而設置管道的粗細
CPen pen, *pOldPen;
for (i=count; i>0; i--)
{
f = float(i) / count;//設置顏色漸變的比例因子
BYTE bR = (BYTE)(GetRValue(C1) * f + GetRValue(C2) * (1 - f));
BYTE bG = (BYTE)(GetGValue(C1) * f + GetGValue(C2) * (1 - f));
BYTE bB = (BYTE)(GetBValue(C1) * f + GetBValue(C2) * (1 - f));
pen.CreatePen(PS_SOLID, i, RGB(bR, bG, bB)); // 建立畫筆
pOldPen = PDC->SelectObject(&pen);
PDC->Polyline(tmpPoint,pointNum);
pen.DeleteObject(); // 釋放GDI資源
} class
//Remove pen/brush
PDC->SelectObject(pOldPen);
delete[] tmpPoint;
}float