c - 缩放开罗图像表面



我有一个包含任意大小图标的cairo_surface_t图像图面,并希望对其进行缩放,使其适合我正在绘制的窗口。窗口具有可绘制的cairo_t绘图上下文。示例代码如下

cairo_surface_t *image;
double scale = cairo_image_get_surface_height(image) / window->height;
// Scale here
cairo_set_source_surface(cairo, image, 0, 0);
cairo_paint(cairo);

您可以使用cairo_scale API。示例:cairo_scale(cairo, scale_width, scale_height);

我将像下面这样做:

  1. 使用任何算法调整图像大小。
  2. cairo_surface_t *surf = cairo_image_surface_create_for_data(resize_image_data, CAIRO_FORMAT_RGB24, resize_image_width, resize_image_height, image_stride);
  3. 创建cairo_t对象 cr
  4. cairo_set_source_surface(cr, surf, 0, 0);
  5. cairo_paint(cr);

最新更新