请教MFC里绘制图形如何随对话框大小改变而改变

flyingcatkin1 研发工程师  2014-11-05 11:30:33
在MFC里添加了一个picture control的空间,在这个控件里绘制波形,我想做的效果是改变对话框的大小,绘图的大小比例也相应的调整,可是现在只有控件大小改变,绘图的区域一直只有那么大,请问怎么破?
...全文
459 点赞 收藏 15
写回复
15 条回复
707wk 2014年12月08日
引用 14 楼 xianglitian 的回复:
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
居然有这个
回复 点赞
向立天 2014年12月08日
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
回复 点赞
flyingcatkin1 2014年11月07日
引用 11 楼 Sandrer 的回复:
不管什么语言,涉及到操作系统的话你应该先恶补一下该系统中对消息的处理流程和各消息的作用、参数
,如果我现在仍然使用这个插件,因为以我的水平是无法写出来这么漂亮的界面的,要是改成VIEW 可以吗?我试着直接生成VIEW,大小改变是没有问题的
回复 点赞
Sandrer 2014年11月07日
不管什么语言,涉及到操作系统的话你应该先恶补一下该系统中对消息的处理流程和各消息的作用、参数
回复 点赞
Sandrer 2014年11月07日
引用 12 楼 flyingcatkin1 的回复:
引用 11 楼 Sandrer 的回复:
不管什么语言,涉及到操作系统的话你应该先恶补一下该系统中对消息的处理流程和各消息的作用、参数
,如果我现在仍然使用这个插件,因为以我的水平是无法写出来这么漂亮的界面的,要是改成VIEW 可以吗?我试着直接生成VIEW,大小改变是没有问题的
首先你要看看这个控件的绘图过程,是按照固定大小来绘图呢,还是按照窗口大小来绘图 如果是按照窗口大小来绘图那就简单了,你只要在父窗口大小改变后(WM_SIZE),修改控件大小就行了 如果是按照固定大小来绘图的话,那你就要自己改了,最好是改成按照窗口大小来绘图
回复 点赞
flyingcatkin1 2014年11月06日
代码是调用了一个叫做plotlab的库的函数,代码确实是借过来,没办法,从来没接触过C++,又要在一定时间内交差,所以确实应该被鄙视。 现在正在恶补C++,用的是C++ PRIMER PLUS,MFC用的是深入浅出MFC,目前的思路是先巩固C++基础,但是又不得不把工作上该做的事情做好,前辈有好的建议吗?
回复 点赞
Sandrer 2014年11月06日
楼主这同学,该怎么说你呢? 波形图的代码你是哪“借”来的? 能研究出波形图,居然连这么简单的问题都解决不了? 典型的未学走先学跑
回复 点赞
smilecabbage 2014年11月06日
这是没刷新的节奏啊 。
回复 点赞
flyingcatkin1 2014年11月06日
void CWaveDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
这是绘图部分的代码,只要调整对话框大小,控件部分就变成这个样子
回复 点赞
flyingcatkin1 2014年11月06日
引用 8 楼 wxhxj0268 的回复:
[quote=引用 7 楼 flyingcatkin1 的回复:] 代码是调用了一个叫做plotlab的库的函数,代码确实是借过来,没办法,从来没接触过C++,又要在一定时间内交差,所以确实应该被鄙视。 现在正在恶补C++,用的是C++ PRIMER PLUS,MFC用的是深入浅出MFC,目前的思路是先巩固C++基础,但是又不得不把工作上该做的事情做好,前辈有好的建议吗?
你的问题可能就出在波形图部分不是自己写的,要控件能随窗口变化,在其内部必须使用相对坐标绘制,如果能修改原程序应该能完成的。[/quote] 嗯嗯,我试着网上的几个方法,都不对,现在想试着把对话框改成视图,这样问题就解决了,但是问题是原来的界面分为两部分,上部分是视图,下半部分是一个对话框,现在我是想在点击对话框里的一个按钮,然后弹出一个VIEW,看了书上的都是直接运行出现一个VIEW,不知道我这样是不是可行的?我现在是在项目里添加了一个新VIEW类,请问这样可以吗?
回复 点赞
flyingcatkin1 2014年11月06日
引用 6 楼 Sandrer 的回复:
楼主这同学,该怎么说你呢? 波形图的代码你是哪“借”来的? 能研究出波形图,居然连这么简单的问题都解决不了? 典型的未学走先学跑
代码是调用了一个叫做plotlab的库的函数,代码确实是借过来,没办法,从来没接触过C++,又要在一定时间内交差,所以确实应该被鄙视。 现在正在恶补C++,用的是C++ PRIMER PLUS,MFC用的是深入浅出MFC,目前的思路是先巩固C++基础,但是又不得不把工作上该做的事情做好,前辈有好的建议吗?
回复 点赞
笨笨仔 2014年11月06日
引用 7 楼 flyingcatkin1 的回复:
代码是调用了一个叫做plotlab的库的函数,代码确实是借过来,没办法,从来没接触过C++,又要在一定时间内交差,所以确实应该被鄙视。 现在正在恶补C++,用的是C++ PRIMER PLUS,MFC用的是深入浅出MFC,目前的思路是先巩固C++基础,但是又不得不把工作上该做的事情做好,前辈有好的建议吗?
你的问题可能就出在波形图部分不是自己写的,要控件能随窗口变化,在其内部必须使用相对坐标绘制,如果能修改原程序应该能完成的。
回复 点赞
傻X 2014年11月05日
WM_SIZE里面设置某些关联参数,在你OnPaint或者OnDraw里面把参数应用起来
回复 点赞
快乐鹦鹉 2014年11月05日
你绘制的代码呢?大小写死了?
回复 点赞
笨笨仔 2014年11月05日
不要用控件,在窗口中直接画,如果是对话框可在OnPaint()中,单文档可在OnDraw()或加一个窗口绘制。在OnSize()中修改绘制范围。
回复 点赞
发动态
发帖子
界面
创建于2007-09-28

7973

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告