小弟刚接触VC++不久,对它实感头疼。现需要画一个动态图。
现有两个R=100的外接圆,要以连接点为中心旋转。然后再给两个圆附上不通的颜色。要用什么函数来实现啊?
求VC高手指点并解析下该程序。谢谢!
现有两个R=100的外接圆,要以连接点为中心旋转。然后再给两个圆附上不通的颜色。要用什么函数来实现啊?
求VC高手指点并解析下该程序。谢谢!
解决方案 »
- 注册ocx 控件出错?
- 检测鼠标键盘消息
- VB转型VC++的字符串类型问题
- CRichEditCtrl设置字体颜色的问题
- MFC中如何实现在桌面写上一行文字?帮我看看我的代码问题,初学者,望大家帮忙,谢谢!
- 怎样用VC实现在指定目录下生成一个.log或.txt文件?
- 如何在VC 6.0中運行 "Programming Windows with MFC 2ed"書中的例子啊?
- @@@@@怎么调整显示分辨率,给一百分@@@@@
- ??? 谁能给我这样一个 CListCtrl 源代码实例 ??? 在后面2列 是选择框(CheckBox那样的,但是点击后 是< 钩 >和< 叉 >的交换
- 如何在视图(View)中显示一个插入标记(Caret),高分!!!!
- 关于子窗口
- VC++6.0 绘制扇形,如何从6点钟方向开始?
创建一个不同颜色的CBrush,然后CDC::SelectObject()载入,然后绘制圆
CDC::Ellipse();
在这个CDC里画呀画.最后再在onpaint里更新.void CMAP::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CStatic::OnPaint()
dc.BitBlt (0,0,600,800,&m_dcCompatible,0,0,SRCCOPY);
}要注意要的是:
如果不想闪:
OnEraseBkgnd
要重载后不要在屏上刷新.要人为Invalidate(); //显示的刷新..BOOL CMAP::OnEraseBkgnd(CDC* pDC)
{
// 这里直接返回,不需要告诉主框架,底图已擦好了.这样可以不闪.
return true;
//return CStatic::OnEraseBkgnd(pDC);
}
至如如何画这个CDC m_dcCompatible
擦掉就是画一个大矩形.
画圆就是先擦再画.CPen pen;
CPen *poldpen;
CBrush brush ;
CBrush *poldbrush;
m_dcCompatible.Ellipse(.......);就是这样的.
最后要说明一点就是用过的笔或刷呀.用完要删除的!!!!