解决方案 »
- CIMAGE保存为JPG时如何调节 压缩比
- 新手,求推荐书??
- 菜鸟问个问题,关于MFC的
- 我靠,怎么不能发贴????、。。。。
- 同时使用CView和CFormView,怎样处理这两个视图?
- PDF等众多的电子文档阅读器中的导航功能中的 文档缩略图 技术 是如何实现的?请高手指点。
- 当我用m_con->BeginTrans();语句开始一个事务时,便出现错误,怎么回事?
- 关于CWnd::SetFocus()的问题
- 救命啊!!关于PC机与单片机的串口通信?SetCommState(hCom,&dcb)为什么总是返回错误值?
- GDI+如何将多张PNG图片合成一张并且保存
- OnBeforeNavigateExplorer1没响应
- 利用字符指针模仿string操作
在这个"非绘图类"中若要画图,它将:
STEP1 对CTest2View里的成员变量置值;
STEP2 调用 CTest2View::Invalidate();
在 CTest2View::OnDraw(CDC *pDC) 里,可使用这些共享变量控制画图.
将pDC_public传进FillPoint ,
在非绘图类CTest2View::OnMasDistance()函数中调用FillPoint(pDC_public)
然后在OnMasDistance()函数中调用 CTest2View::OnDraw(CDC *pDC);是这个意思吗?为什么我的OnMasDistance()函数执行一半就卡了?Ps:不知道是不是有这个因素,我的View里面始终重绘着一张图像,我现在想要重绘的画点操作是需要覆盖那个图像的。
我说的不是你理解的意思.用 View 绘图的大致框架是:
1) 用数据结构描述要绘制的图
2) 若要绘图,先更改数据结构,然后再调用 View::InValidate()
3) 在 View::OnDraw(CDC * pDC) 函数里,根据数据结构在屏幕上真正画图从你的贴子上看,我建议采用下面的数据结构:
struct CNode // 一个图形元素
{
CNode * m_Next; // 多个图形元素用链表组织在一起
int m_KindCode; // 类型码 1 点 2 线 3 (你可以自己定义)
RECT m_rect; // 图形占用的区域
int m_Color; // 颜色
..............; // 可能还要其它的成员,自己设计
};然后在 Document 类 或 View 类的 .h 文件中定义元素链表头指针CNode * m_pNodes;在系统初始化时把它置空.
若要增加一个像素,则可以:
CNode * p=new CNode;
在 p 中填写坐标和颜色;
把 p 加到 m_pNodes 链表中;
调用 View::InValidate();在 View::OnDraw(CDC * pDC) 中,你可以:
CNode * p;
for (p=m_pNodes;p!=NULL;p=p->m_Next)
{
switch(p->m_KindCode)
{
case 1: // 画点
pDC->SetPixel(p->m_rect.left,p->m_rect.top,p->m_Color);
break;
case 2: // 画线
pDC->LineTo(.....);
break;
case ..... // 可以画其它图形
}
}