如何将Canvas添加到自定义类?

时间:2020-04-17 14:33:36

标签: delphi canvas graphics32

Graphics32类TBitmap32具有画布,因此可以在Canvas上绘制的所有内容都可以在TBitmap32上绘制。 我想创建自己的位图类,而不是从TBitmap或TBitmap32派生,并且还具有Canvas。 我可以通过将TBitmap与Canvas一起使用来伪造它,然后将像素复制到我的类中。但这很慢。

1 个答案:

答案 0 :(得分:1)

使用Graphics32,可以使用多个图形“后端”。每种都有不同的优点和缺点。但是,这主要与性能和内存消耗有关。

(对于TBitmap32)默认值为TGDIBackend,它用途广泛。也就是说,它继承了GDI的所有缺点。特别是GDI元素的数量是有限的,因此您不能有无限多个实例。

一个更好的选择是TMemoryBackend,但是不能单独将它绘制(“变白”)到屏幕(即任何DC)上。妥协的是TGDIMemoryBackend,它是一种可以绘制到屏幕上的TMemoryBackend。但是,如果我没记错的话,它没有字体支持,但是根据您的要求,这可能不是必需的。