2013-03-11 48 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