一个关于OnDraw()的重绘问题,急急急急急急急!

zzycad 2001-07-04 09:22:23
我在View里做了2个MSChart控件,然后我分别在控件上用GetDC()的方法调用TextOut写了一些文字,但是这样在重绘时写的文字就会消失,我应怎样在OnDraw()里加入代码,达到能够重绘!

谢谢!
...全文
135 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzycad 2001-07-05
  • 打赏
  • 举报
回复
在头文件里定义了标注的结构:
struct DIM
{
int chart_num;//纪录该dim所是哪个图
CFont font; //纪录字体
CString text; //纪录标注的内容
float angle; //纪录标注的角度
}stucDim;

dim_num表示标注的个数
因为我有两个图,所以记录了该标注是那个图 dim[i].chart_num

我在OnDraw()里是这样写的:

if(flag_draw)//重绘标注
{
for(int i=0;i<dim_num;i++)
{
CDC* dc = m_chart[dim[i].chart_num].GetDC();
CFont* oldfont = dc->SelectObject(&(dim[i].font));
dc->TextOut(dim[i].rect.left,dim[i].rect.top,dim[i].text);
dc->SelectObject(oldfont);
}
}

请各位大虾,帮帮忙,谢谢
zzycad 2001-07-05
  • 打赏
  • 举报
回复
vc_boy 我试过了,好像是控件盖住了字,结果什么也显示不出来


谢谢,您的回复
vc_boy 2001-07-05
  • 打赏
  • 举报
回复
道理应该是一样的,在你的CDC *dc = .....前加上invalidate()和updatewindow()试试,你试过了吗?
zzycad 2001-07-04
  • 打赏
  • 举报
回复
我的MSChart是在View里的

我是用Create(....)出来的

不是在Dialog里
vc_boy 2001-07-04
  • 打赏
  • 举报
回复
在你的触发函数中按上述方法做一下,看是否有用?
因为你在mschar中绘图后,dialog在重绘对话框时会重绘mschart控件而造成你输出的东西被清除。

或者在你的鼠标事件中记录下位置,然后强迫对话框重绘,然后你重载对话框重绘函数onpaint,并在其中根据得到的点进行绘制。但是也要进行上述的调用(invalidate和updatewindow)否则你在控件中绘的东西会被对话框重绘时清掉。

我不是大明 2001-07-04
  • 打赏
  • 举报
回复
case WM_SIZE:
//add you redraw codes here!
zzycad 2001-07-04
  • 打赏
  • 举报
回复
现在的情况是,TextOut()中的位置是由鼠标触发的点,TextOut()也是在所触发的函数里面,所以不好放在OnDraw里面,或者调用,我该怎么办呢]?
vc_boy 2001-07-04
  • 打赏
  • 举报
回复
得到你mschart控件的指针,然后调用invalidate()和updatewindow(),其次再写文字,这样你试试。

cwnd *pwnd = getdlgitem(XXX)
cdc *pdc = pwnd->getdc();

pwnd->invalidate();
pwnd->updatewindow();
.....
pdc->textout(....);

sinx 2001-07-04
  • 打赏
  • 举报
回复
up
aha0 2001-07-04
  • 打赏
  • 举报
回复
在OnDraw()(视图类) / OnPaint()(CWnd类)里加入你的绘图代码(或函数调用).

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧