MFC繪製萬花筒等分圓(VS2013)

先看效果圖

在這裏插入圖片描述

首先要找到不同等分數圓上等分點

滑動條的數值即爲等分數,滑動條的關聯變量爲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是用來上下、左右移動創建的變量。

這裏只寫了萬花筒等分的做法,還有很多功能沒有貼上代碼,包括畫筆畫出任意線條等,待更新…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章