首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC OnDraw与OnPaint

MFC OnDraw与OnPaint
EN

Stack Overflow用户
提问于 2022-04-02 15:17:14
回答 1查看 367关注 0票数 0

我想知道在MFC中OnDraw()OnPaint()之间的区别。

在互联网上搜索了一段时间之后,我找到了一个有用的文章。总而言之,

  1. WM_PAINT将触发OnPaint(),后者调用OnDraw()并传递一个CDC*: {/标准油漆例程CPaintDC dc(this);OnPrepareDC(&dc);OnDraw(&dc);}
  2. 另一个文章提到,在打印文档时,OnPrint()还通过传递打印机DC来调用OnDraw()。因此,通过重写OnDraw(),您可以在一个函数中获得屏幕绘制和打印,这是很方便的。

我试着把我的绘图语句放在OnDraw()OnPaint()中。两种方法都能很好地工作。OnDraw()比较容易一些,因为它已经得到了一个指针pDC

EN

回答 1

Stack Overflow用户

发布于 2022-04-02 16:28:03

设备上下文是一个古老的抽象概念。早在1982年,计算机图形学:原理与实践的第一版(可能更早)就对它们进行了描述,直到今天,人们似乎还对此感到困惑。

设备上下文的主要目的是抽象呈现设备的特性(例如显示、打印机、内存中位图等)。并提供一个连贯的接口。呈现到设备上下文中的代码通常不需要知道,哪个设备最终会消耗呈现命令。

名为在视图中绘图的文档条目继续解释系统的工作原理:简而言之,所有绘制都应该在接收设备上下文的OnDraw覆盖中执行。系统提供的OnPaint实现然后构造一个CPaintDC并调用OnDraw

到目前为止,这似乎只是呈现窗口内容的一种过于复杂的方法。当你实现打印支持时,事情就开始变得有意义了。现在您所要做的就是设置一个打印设备上下文并调用OnDraw。您的OnDraw实现中没有什么需要更改的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71718788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档