既然你已经确认了5个点的坐标,那么就是平常人们用手来画五角星的过程,你应该是会的。一共画5笔,从最左边的点开始,先到最右边的点,再到左下角的点,再到最上面的点,再到右下角的点,最后返回最左边的点把图形闭合。如此用LineTo()将五角星闭合。
如此一来,就会形成6个闭合的图形,分别是5个以5个点为一点的三角形,和中心的5边型。将这5个图形中的所有像素全部填充为红色即可。
填充的算法有很多,像是三角形和矩形,都有现成的API进行填充。对于中间的五边形,可以采用矩阵边缘检测的方法取得空白矩阵向量然后填色(这也是最有效的算法);也可以采用接近逼近法来填充,就是在五边形的内部生成无数个红色的小三角形,将五边形填充满;也可以采用覆盖法来填充(前提是正五角星),就是用数学公式算出五角星的内接圆,把这个圆形填充为红色即可。
我建议你将整幅画布按照矩阵的方式进行 *** 作,最后用BitBlt扫描到前台,这些 *** 作都会异常简单。。。
添加键盘按下的消息映射,判断是不是112(F1的键盘值),是则用GetDlgItem(txt1的ID)->SetWindowText(_T("1"))
GetDlgItem(txt2的ID)->SetWindowText(_T("2"))
GetDlgItem(txt3的ID)->SetWindowText(_T("3"))
GetDlgItem(txt4的ID)->SetWindowText(_T("4"))
UpDatadate()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)