2013-03-11 49 views
0

尝试设置一个Opengl上下文来渲染成位图,但我发现从Tbimap画布对象返回的句柄不断变化,因此渲染上下文一直抛出异常,因为它与渲染上下文创建的句柄不匹配用。如何获得静态Tbitmap.canvas.handle?

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

我需要这个来保持静态或者它的所有有点没有意义的能够渲染到位图的第一位。

任何线索如何修复手柄?

回答

6

Windows位图对象具有固定的宽度和高度。当你创建一个HBITMAP时,你必须一次又一次地决定高度,宽度和其他属性,如像素格式。所以,当然当您修改Delphi TBitmapWidthHeight属性时,则需要重新创建实现HBITMAP

看起来您要求能够创建具有可修改的宽度和高度属性的HBITMAP。没有这样的东西存在。

+0

这是一个无赖,所以我只能渲染到位图一次,那就是它?渲染到屏幕没有这样的限制,我可以随意调整屏幕而不会受到惩罚。事情是,渲染包括文本和建筑字体在OpenGL中非常缓慢,所以每次重新创建渲染上下文都是不可能的。 – 2013-03-11 10:19:04

+4

@Andyk:你可以随意渲染多次,只要你不改变位图的尺寸。但是,当然,这不是你经常做的事,是吗? – 2013-03-11 10:20:03

+0

@Andreas。输出用于渲染打印机输出,但用于所述输出的打印预览屏幕可以由用户调整大小。 – 2013-03-11 10:26:16