先看效果圖
首先要找到不同等分數圓上等分點
滑動條的數值即爲等分數,滑動條的關聯變量爲m_sliderctrl2
添加響應函數OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
函數中添加:
// TODO: 在此添加消息處理程序代碼和/或調用默認值
dengfen = m_sliderctrl2.GetPos();//獲取等分數
for(int i = 0; i < dengfen; i++)
{
jiaodu[i] = (float)(i * 360 / dengfen);
}
for (int i = 0; i < dengfen; i++)
{
heng[i] = (float)(140+r/2)*cos((float)jiaodu[i] * PI / 180);
zong[i] = (float)(140+r/2)*sin((float)jiaodu[i] * PI / 180);
}
InvalidateRect(NULL);
Invalidate(FALSE);
UpdateWindow();
CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
這裏是獲得等分數,求等分點相對於圓心的橫縱偏移量,這裏我的圓半徑是140,根據不同情況請自行修改半徑值
在OnPaint()函數中添加語句
畫出萬花筒效果:
int n = m_sliderctrl2.GetPos();
for (int j = 0; j < 10; j++){
for (int i = 0; i < n; i++)
{
dc->MoveTo(440 + hengp + heng[j], 160 + zongp + zong[j]);
dc->LineTo(440 + hengp + heng[i], 160 + zong[i] + zongp);
}
}
這裏440,160是我的圓心的位置,hengp,zongp是用來上下、左右移動創建的變量。
這裏只寫了萬花筒等分的做法,還有很多功能沒有貼上代碼,包括畫筆畫出任意線條等,待更新…