簡體   English   中英

為 cairo 文本繪制反射效果

[英]Draw the reflex effect for cairo text

在此處輸入圖像描述

為了繪制反射效果,我們必須使用翻轉 y 來繪制圖像。 要使用透明度進行繪制,我們必須使用遮罩方法。

有什么方法可以直接為字體字形制作這個嗎?

要繪制垂直翻轉文本,我使用:

/* normal text */
cairo_set_source_rgb (cr, 0, 1, 0); /* green */
cairo_move_to (cr, x, y);
cairo_show_text (cr, TEXT);

/* vertically flipped text */
cairo_matrix_t font_matrix;

cairo_get_font_matrix (cr, &font_matrix);
font_matrix.xx = TEXT_SIZE;
font_matrix.yy = -TEXT_SIZE;
font_matrix.y0 = 5;
cairo_set_font_matrix (cr, &font_matrix);
cairo_move_to (cr, x, y)
cairo_show_text (cr, TEXT);

而且我需要用漸變來繪制,這樣才能達到反射效果。

啊……

我需要用 CAIRO_OPERATOR_CLEAR 創建一個類似的表面。 像這樣的東西:

cairo_surface_t *mask;
cairo_pattern_t *pattern;
cairo_matrix_t font_matrix;
cairo_t *cr2;

mask = cairo_surface_create_similar (cairo_get_group_target (cr),
                                     CAIRO_CONTENT_ALPHA,
                                     width, height);
cr2 = cairo_create (mask);
cairo_surface_destroy (mask);

cairo_save (cr2); {
cairo_set_operator (cr2, CAIRO_OPERATOR_CLEAR);
cairo_paint (cr2);
} cairo_restore (cr2);

pattern = cairo_pattern_create_linear (0, height - (extents.height + extents.y_bearing), 0, font_extents.ascent);
cairo_pattern_add_color_stop_rgba (pattern, 0.00, 1, 1, 1, 0);
cairo_pattern_add_color_stop_rgba (pattern, 0.25, 1, 1, 1, 0.25);
cairo_pattern_add_color_stop_rgba (pattern, 0.50, 1, 1, 1, 0.5);
cairo_pattern_add_color_stop_rgba (pattern, 0.75, 1, 1, 1, 0.75);
cairo_pattern_add_color_stop_rgba (pattern, 1.00, 1, 1, 1, 1);
cairo_set_source (cr2, pattern);
cairo_pattern_destroy (pattern);

cairo_set_font_face (cr2, font_face);

cairo_set_font_size (cr2, TEXT_SIZE);

cairo_get_font_matrix (cr, &font_matrix);
font_matrix.xx = TEXT_SIZE;
font_matrix.yy = -TEXT_SIZE;
font_matrix.y0 = 5;
cairo_set_font_matrix (cr, &font_matrix);
cairo_move_to (cr, x, y)
cairo_show_text (cr, TEXT);

cairo_mask_surface (cr, cairo_get_target (cr2), 0, 0);
cairo_destroy (cr2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM