如何获得静态Tbitmap.canvas.handle?

And*_*y k 0 delphi opengl delphi-2007

尝试设置一个Opengl上下文以呈现为位图,但我发现从Tbimap画布对象返回的句柄不断变化,因此渲染上下文不断抛出异常,因为它与创建渲染上下文的句柄不匹配.

我发现更改位图宽度或高度将更改句柄值,如果位图是在执行渲染的过程之外创建的,则每次输入过程时都会得到不同的句柄.

我需要这个保持静态,或者它有点无意义,有能力首先渲染到位图.

任何线索如何修复手柄?

Dav*_*nan 6

Windows位图对象具有固定的宽度和高度.当你创建一个HBITMAP你必须一劳永逸地决定高度,宽度和其他属性,如像素格式.所以,当然,当你修改WidthHeight德尔福的财产TBitmap,那么实施HBITMAP将需要重新创建.

您似乎要求能够创建HBITMAP具有可修改的宽度和高度属性.没有这样的事情存在.

  • @Andyk:您可以根据需要多次渲染,只有不更改位图的尺寸.但可以肯定的是,你经常做的不是什么,是吗? (4认同)
  • Andy,你可以重复使用相同的位图,但为什么要在*绘制周期中修改它的大小*?绘制它以进行打印预览,然后调整其大小并再次绘制到真实打印.为什么渲染器会关心它是否是相同的位图?第二个渲染应该独立于第一个渲染,因此原始手柄应该无关紧要.渲染器应该在调用之间使设备上下文保持一致状态.如果不是,你需要解决这个问题. (2认同)