【发布时间】:2013-01-24 01:22:06
【问题描述】:
我尝试在 C++ Builder XE3 中将现有的 OpenGL 应用程序从基于 VCL 的表单转换为基于 FMX 的表单。
为此,我使用 Firemonkey 表单的句柄来创建 OpenGL 设备上下文,并使该表单成为另一个表单的子表单,以模仿我在基于 VCL 的应用程序中的表单内的面板。
现在的问题是,在调整大小事件之后或通常在调用 Invalidate() 之后,表单会以其背景呈现。这会导致闪烁甚至更糟:有时会显示背景而不是我的 OpenGL 渲染场景。
如何防止在我的 Firemonkey-OpenGL-form 位置重新绘制区域。或者,我可以定义一个 Ownerdraw 函数或其他东西吗?
请注意,我无法选择使用 Firemonkey-3d-Form。
【问题讨论】:
-
不确定“Firemonkey”是什么,但大概它有绘画方法和擦除背景的方法,就像 Windows 窗体一样。您需要找到擦除背景消息,覆盖它并确保它什么都不做。
-
@Robinson:Firemonkey 类似于 Windows 窗体,但控件使用 OpenGL (MacOS) 或 DirectX (Win) 绘制。因此,它的行为方式完全不同。
标签: delphi opengl firemonkey