Как установить DPI в каирографии? - PullRequest
1 голос
/ 27 февраля 2012

При создании векторной графики для 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). Но как мне изменить этот параметр?

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

Ответы [ 2 ]

3 голосов
/ 27 февраля 2012

Точка - это стандартная типографская единица измерения .Независимо от того, говорите ли вы о Каире, точка - это всего лишь 1/72 ". Это не какая-то настройка, которую вы меняете, как факт, что вы не меняете число дюймов в футе.

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

Чего вы надеетесь достичь, изменив DPI?

1 голос
/ 17 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...