0

我需要将大约 100 万个半透明矩形混合在一起,同时能够通过 1e-6 的增量来管理透明度精度。

通常,如果将我的 100 万个矩形绘制在彼此之上,我希望这些像素的 alpha 值正好为 1.0(500 000 个矩形为 0.5,依此类推)。

使用 cairo 库,理想情况下它看起来像:

const int NB_RECT = 1000000;
//[...]
cairo_set_operator(cr, CAIRO_OPERATOR_ADD);
cairo_set_source_rgba(cr, 1.0, 0, 0, 1.0/NB_RECT);
for(int i = 0 ; i < NB_RECT ; i++) {
    //[...]
    cairo_rectangle(cr, x, y, w, h);
    cairo_fill(cr);
}
// [...]

这不起作用,因为低于 alpha~=0.01,绘图命令似乎被简单地丢弃(可能是由于 cairo 内部颜色的内部表示)。

您能否建议一个处理高精度透明度的绘图库或可能的解决方法?

4

0 回答 0