2015-02-27 4 views
2

Возможно ли с помощью cairo заполнить коробку или многоугольник штриховым (или произвольным) рисунком, как показано ниже? Я не нашел информатистов в документации или хакерах в каире.Каир заполняет многоугольник с рисунком люка

hatch pattern

  • Есть ли встроенный в шаблон в Каире?
  • Каковы функции для заполнения шаблонами?

Я использую haskell, но фрагмент на любом языке был бы полезен.

+2

не полный ответ, но: возможно, вы можете [клип] (HTTP : //hackage.haskell.org/package/cairo-0.13.0.6/docs/Graphics-Rendering-Cairo.html#v: clip) фигуру, которую вы хотите заполнить, затем нарисуйте ваш узор поверх более легко вычислимой большей области, чем форма охватывает. –

+0

Это похоже на что-то подобное, создавая шаблон из изображения, а затем разбивая его на фигуру: http://cairographics.org/samples/imagepattern/ – Cactus

ответ

2
cairo_pattern_t *pattern = create_stipple ("lightgrey", (guchar *)stipple_data); 
cairo_matrix_init_scale (&matrix, 1.0, 1.0); 
cairo_pattern_set_matrix (pattern, &matrix); 
some_shape = GOO_CANVAS_RECT (goo_canvas_rect_new (GOO_CANVAS_ITEM (group), 10.0, 10.0, 10.0, 10.0, "fill-pattern", pattern, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL)); 
cairo_pattern_destroy (pattern); 

Взято из одного из моих любимых проектов oregano @ github

также взглянуть на cairo API reference которая охватывает также общий шаблон API

+0

Я не вижу строку «острие» в любом месте на связанной странице , Кстати. –

+0

Какой штрих? Фигура достигается путем определения патча размером 8х8 с вручную определенными данными, как это сделано в орегано. 'create_stipple' - это настраиваемая функция, выполняющая именно это как связанное. – drahnr

+0

Вы даете ссылку и описываете ее как имеющую «детали детализации». Но это не так, потому что ссылка вообще не упоминает очертания. Возможно, вам следует изменить ссылку, чтобы указать на документацию для вашей библиотеки, или обновить описание ссылки, чтобы сказать, что вы ожидаете от людей, чтобы найти там. –