2012-02-27 3 views
0

При создании векторной графики для PDF-файлов я использую одну из функций «create» для рендеринга PDF, например cairo_pdf_surface_create_for_stream. Сигнатура этой функции:Как установить DPI в cairographics?

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 точек на дюйм). Но как я могу изменить, что установка?

я мог что-то фактор в размер, при использовании другого разрешения и таким образом, мне кажется, что это самая худшая практика.

ответ

4

A point is a standard typograpical unit of measure. Независимо от того, говорите ли вы о Каире, точка - это просто 1/72 дюйма. Это не какая-то настройка, которую вы меняете, так же как и то, что вы не меняете число дюймов в футах.

Всего причина для использования физических измерений (точек) вместо экрана зависимого одного (пиксели) является разрешение независимости. Это хорошая вещь.

Что вы надеетесь достичь путем изменения DPI?

+0

Дело в том, что мне нужно по спецификации возможность устанавливать разрешение в dpi. При создании PDF-файлов вы можете установить параметр dpi в таких вещах, как Inkscape и т. Д. (Разрешение для растеризации). – polemon

+1

Но PDF-файлы не растрированы и поэтому не имеют такого разрешения! Однако, если вы рисуете, какой каир не может выразить в PDF-файлах, он будет использовать резервное разрешение, которое вы можете установить с помощью cairo_surface_set_fallback_resolution (см. Ответ от john358). Итак, что именно вы хотите изменить? –

1

Если «изменить dpi» вы хотите нарисовать в другом масштабе, чем 1/72, вы можете использовать cairo_scale(). Если вы ссылаетесь на dpi для обратных изображений (регионы, которые растрированы, потому что они не могут быть сделаны изначально pdf), используйте cairo_surface_set_fallback_resolution().

Смежные вопросы