- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的自定义绘图区的 WM_PAINT 看起来像这样:
// TRUE to clear the background
if (GetUpdateRect(hwnd, &r, TRUE) == 0)
return; // no update rect; do nothing
dc = BeginPaint(hwnd, &ps);
// check return
// paint some RGBA image data with GDI+
EndPaint(hwnd, &ps);
(暂时忽略向 GDI+ 发送 HDC。)
我在这里使用 GetUpdateRect()
而不是从 BeginPaint()
获取更新矩形,因为我总是想在空白 Canvas 上绘制,尤其是因为我正在做alpha 混合绘图在这里。此外,the docs for WM_PAINT
如果 GetUpdateRect()
失败,请说不要调用 BeginPaint()
。
但是,当我的自定义绘图区实际执行此 WM_PAINT 时,它并没有清除绘图区。我可以这么说,因为启用 alpha 的图像是在其自身之上绘制的,导致颜色更深。
在我的代码的另一部分中,我通过调用 InvalidateRect()
来响应键盘事件以强制更新整个区域。如果我改变相当于
InvalidateRect(hwnd, NULL, FALSE);
到
InvalidateRect(hwnd, NULL, TRUE);
该区域确实得到了正确的清理。
那么我到底做错了什么?谢谢。
(实际代码是 this ;它是用 Go 编写的。这也是我直接使用 GDI+ 的原因。(我还没有弄清楚如何使用常规 GDI 进行 alpha 混合。))
最佳答案
InvalidateRect
使区域无效,这意味着它之后是删除/重绘请求。您将它与 GetUpdateRect
进行比较,后者不执行验证或无效操作,并且使用 TRUE
参数删除该区域的方式与使用标准绘画删除的方式相同。此外as MSDN states :
The update rectangle retrieved by the BeginPaint function is identical to that retrieved by GetUpdateRect.
BeginPaint automatically validates the update region, so any call to GetUpdateRect made immediately after the call to BeginPaint retrieves an empty update region.
总而言之,我看不出有任何理由像您在绘制处理程序中那样调用 GetUpdateRect
。 BeginPaint
以相同的方式执行此操作,并进行验证,无论如何,您一进入绘制处理程序就需要执行此操作。到达那里后,删除处理程序已被调用,无需通过 GetUpdateRect
再次调用它。
BeginPaint
的 PAINTSTRUCT::rcPaint
以同样的方式获取更新区域,只是在调用 EndPaint
之前不要做任何事情,如果更新区域为空。
关于winapi: GetUpdateRect() with bRepaint TRUE in WM_PAINT 不清除绘画区域,但 InvalidateRect() 在 WM_PAINT 之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23001890/
我正在努力解决一个问题 Rahul 正在玩一个非常有趣的游戏。他有 N 个圆盘(每个圆盘的半径相等)。每个磁盘都有一个不同的数字,从 1 到 N 与之相关联。磁盘一个接一个地放在一堆中。 Rahul
我正在尝试使用此代码发出请求: public JsonObject account() throws BinanceApiException { return (new Request
我使用的是 Mac OS 和 emacs -nw (终端模式)。 我不知道如何在 emacs 之外粘贴东西(已由 M-w 在 emacs -nw 中实现)。 我知道emacs -ns可以做到。 搜索互
我试图让导航栏菜单出现在“标题容器”菜单中,但由于某种原因,导航栏链接流到外面(在修改浏览器窗口之前)。我不明白为什么,但我怀疑它与这一行有关: div class="collapse navbar-
我们的项目是在 WAS 6.1/hibernate/struts 上使用 RAD 7.0 开发的中型 Web 应用程序,该应用程序已投入生产。目前我们在属性文件中硬编码了生产系统的 IP 地址,在 h
我的要求是在传单中创建 N 类型的标记。该列表很大,无法容纳在 map 区域中。 我想要类似的东西: http://blog.georepublic.info/2012/leaflet-example
如 docs 中所述,基于 spring-boot 的 Web 服务正在使用 Sentry .它工作正常,但不应将某些异常发送到 Sentry ,例如为了在某些请求上返回 HTTP 状态 410
我已经阅读了 Apple Core Animation 文档。它说核心动画没有提供在窗口中实际显示图层的方法,它们必须由 View 托管。当与 View 配对时, View 必须为底层图层提供事件处理
我试图在滚动时检查元素是否在我的视口(viewport)内。如果它在我的视口(viewport)之外,我会添加一个类来将元素固定到顶部。 我用来确定元素是否在视口(viewport)之外的函数是: i
我正在查询中创建一个弹出窗口。悬停时弹出窗口一切正常。当用户的鼠标离开 div 以关闭它时,我让它看到计时器启动。如果他在计时器完成之前再次进入 div,则计时器将被清除。 这很好,但是如果用户点击
我使用名为 zonemap 的字典创建了一个 4x6 区域 map 。我在该字典中嵌套了多个字典;每个区域代表玩家可以访问并与之互动的区域。我希望能够将玩家的移动限制在该 4x6 区域,并重新显示他们
我正在构建一个页面,该页面将使用 ajax 来更新主要内容区域。用户将单击左侧菜单栏中的项目来更新右侧的 div 并包含搜索结果。 我想检测用户是否向下滚动到目前为止导致右侧结果 div 移出视口(v
好的,我在 div 中有一个带有拖放类的表格,其溢出设置为“自动”,这允许我隐藏部分时间表,只在底部放置一个滚动条。但是,我只是在可滚动 div 之外创建了一些可放置元素,并且我的可拖动元素无法离开可
我有大量项目绑定(bind)到 ListBox,VirtualizingStackPanel 设置为它的 ItemsPanel。随着用户滚动和项目容器的创建,我做了一些工作来用数据填充项目(使用数据库
我想知道是否有一种方法可以将类成员的访问范围专门限定为在 C# 中获取/设置实现,以减少我意外直接访问它们的可能性。类似 private 的东西,但只允许 get/set 访问它,我想我可以将每个变量
我正在尝试编写一个小游戏,以应用我自己在本类(class)中学到的概念。当游戏打开时,我想要一个自定义模态视图来告诉用户如何玩。同样,当他们输了时,我想呈现一个结果页面,该页面将位于 if 语句内。我
我有一个非常具体的 HTML/CSS 和/或 JS 问题。我在 this fiddle here 创建了一个示例显示问题。 我有一个可滚动的 div,它是一个表的父级: ...我的表格行之一包
我的 jar 文件中打包了一个 exe,我试图将它复制到一个临时位置,以便我可以使用 Desktop.browse() 运行它,为此我设置了一个使用 class.getResourceAsStream
您好,我对这段代码有疑问。我的问题是第一个 console.log(smile_per_sec) 给了我需要的值,但是第二个给了我声明变量时给它的值。 $.getJSON( twitter
我必须更改标记弹出窗口的默认大小以容纳我想放入其中的数据。我更改了一些 map 设置,因此当用户将其拖出 View 时,它总是会弹回最大范围。我遇到的问题是,对于靠近边缘的标记,当它的弹出窗口打开时,
我是一名优秀的程序员,十分优秀!