我们可以在基于对话框的 mfc Visual Studio 2010 中绘制形状(线、圆等)吗?
Posted
技术标签:
【中文标题】我们可以在基于对话框的 mfc Visual Studio 2010 中绘制形状(线、圆等)吗?【英文标题】:can we draw shapes (line,circle , etc.) in dialog-based mfc visual studio 2010? 【发布时间】:2011-07-06 12:54:59 【问题描述】:我想实现一个示波器,通过基于对话框的 MFC Visual c++ 显示一些不同的频率,但是当我搜索太多时,我发现在 Visual c++ 中绘制形状的唯一方法是使用 SDI 或 MDI! 我想知道是否有办法通过基于对话框的 mfc 来绘制我的频率图。 如果有人知道任何参考,如果他/她介绍给我,我真的很感激。
【问题讨论】:
【参考方案1】:是的,您可以使用 MFC 在对话框中绘图。
简而言之,在对话框上放置一个“静态”(或图像,我不确定)资源,覆盖/派生类并处理 WM_PAINT 消息以绘制图形/示波器。
看看http://www.codeproject.com/KB/miscctrl/High-speedCharting.aspx 是一个很好的例子。
【讨论】:
非常感谢 Max 并感谢您提供链接!我对 Windows 编程非常陌生,特别是 Visual C++,您能否解释一下有关使用静态资源的更多信息。我怎样才能覆盖/派生类?我很抱歉我的愚蠢问题。非常感谢您的帮助。【参考方案2】:您可以使用GDI 绘制任何东西,如果您打算重复使用它,您甚至可以为您的示波器实现自定义控件,否则您可以只使用静态/图片框架作为容器。
对于可以进行多次更新的东西,例如示波器,您可能需要对绘制的表面进行双重缓冲,否则您会被撕裂。可以在here 找到使用 GDI 的简短概述。
MFC 有自己的 GDI 数据结构和函数等价物,see this。
【讨论】:
以上是关于我们可以在基于对话框的 mfc Visual Studio 2010 中绘制形状(线、圆等)吗?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Community 2015 MFC 空项目无法编译
为啥 CDC::LineTo() 不在 Visual C++ 2015 MFC 对话框中绘制?
MS Visual Studio 2013 MFC 应用程序:为消息/输出服务创建文本框
如何根据用户输入创建动态变化的对话框 Visual Studio 2010 (mfc)