为PDF创建矢量图形时,我使用其中一个“创建”功能进行PDF渲染,例如cairo_pdf_surface_create_for_stream
。该功能的签名是:
cairo_surface_t * cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func,
void *closure,
double width_in_points,
double height_in_points);
现在,我可以用点设置曲面的大小,但是一个点的大小看似硬编码。在描述中它说:
width_in_points:表面宽度,以磅为单位(1点== 1 / 72.0英寸)
height_in_points:曲面的高度,以磅为单位(1点== 1 / 72.0英寸)
如您所见,1pt = 1/72“(72 dpi)。但我该如何更改该设置?
当使用不同的分辨率并以这种方式进行补偿时,我可以考虑尺寸,但在我看来,这似乎是最差的做法。
答案 0 :(得分:3)
A point is a standard typograpical unit of measure。无论你是否在谈论开罗,一点就是1/72“。这不是你改变的一些设置,就像你不改变一英尺的英寸数一样。
使用物理测量(点)而非依赖于屏幕的(像素)的全部原因是分辨率无关。这是一件好事。
你希望通过改变DPI来实现什么目标?
答案 1 :(得分:1)
如果通过“更改dpi”你想以不同于1/72“的比例绘制你可以使用cairo_scale()。如果你指的是后备图像的dpi(光栅化的区域,因为它们不能由pdf本地绘制)使用cairo_surface_set_fallback_resolution()。