下载源代码
本人由于项目需要,做了一个风向仪表的类CWindPicture。
其使用方法如下:
1.将Windpicture.cpp和WindPictre.h以及mem.h添加到你的工程目录。
2.在初始化函数或你用到的函数中设置角度即可,m_windMeter.setAngle(0);
3.其部分代码如下:
void CWindPicture::OnPaint()
{
CPaintDC dc(this); // device context for painting
GetClientRect(&m_rectCtrl);
CMemDC memDC(&dc, &m_rectCtrl);
// 选取圆盘边框半径
//m_nRadiusFrame = max(m_rectCtrl.Height(), m_rectCtrl.Width())*9/21;
m_nRadiusFrame=min(m_rectCtrl.Height(),m_rectCtrl.Width());
// 获得仪表盘中心点
m_ptMeterCenter = m_rectCtrl.CenterPoint();
if(m_dcground.GetSafeHdc() == NULL|| (m_bitmapBackground.m_hObject == NULL))
{
m_dcground.CreateCompatibleDC(&dc);
m_bitmapBackground.CreateCompatibleBitmap(&dc, m_rectCtrl.Width(),m_rectCtrl.Height());
m_pBitmapOldBackground = m_dcground.SelectObject(&m_bitmapBackground);
DrawMeterBackground(&m_dcground, m_rectCtrl);
}
memDC.BitBlt(0, 0, m_rectCtrl.Width(), m_rectCtrl.Height(),
&m_dcground, 0, 0, SRCCOPY) ;
DrawValue(&memDC);
DrawNeedle(&memDC, m_rectCtrl);
// 不为绘图消息调用 CStatic::OnPaint()
}(全文完)