2011-09-24 5 views
3

Est-il possible de mettre à l'échelle le svg avant d'obtenir son tampon de pixels via librsvg? Je peux voir l'API comme rsvg_pixbuf_from_file_at_zoom mais elle est marquée comme obsolète.Mise à l'échelle des images vectorielles via librsvg

Existe-t-il un autre moyen de le faire? Je voulais éviter d'utiliser le cairo pour cela, si possible.

Répondre

4

Vous n'avez pas beaucoup de choix, il est soit:

  • en utilisant une fonction dépréciée comme rsvg_pixbuf_from_file_at_size() (qui n'est pas que mauvais, il est peu probable cette fonction disparaîtra dans un proche avenir)
  • ou en utilisant l'objet RsvgHandle avec rsvg_handle_new_from_file() et rsvg_handle_render_cairo() sur une surface de cairo créer à la bonne dimension

Vous pouvez limiter l'utilisation de cairo un minimum si vous voulez un GdkPixbuf à la fin par:

  • créer un RsvgHandle avec rsvg_handle_new_from_file()
  • créer un contexte cairo et la mise en place de la matrice de transformation que vous voulez
  • rendre le svg avec rsvg_handle_render_cairo()
  • récupérer le pixbuf avec rsvg_handle_get_pixbuf()
Questions connexes