返回顶部
首页 > 资讯 > 精选 >如何使用 GOTK3 和 librsvg 在 Go 中加载内联 SVG?
  • 944
分享到

如何使用 GOTK3 和 librsvg 在 Go 中加载内联 SVG?

go语言 2024-02-09 05:02:14 944人浏览 八月长安
摘要

PHP小编柚子将为大家介绍如何在Go语言中使用GOTK3和librsvg加载内联SVG。GOTK3是一个用于创建跨平台GUI应用程序的Go语言绑定库,而librsvg是一个用于渲染SV

PHP小编柚子将为大家介绍如何在Go语言中使用GOTK3和librsvg加载内联SVG。GOTK3是一个用于创建跨平台GUI应用程序的Go语言绑定库,而librsvg是一个用于渲染SVG图像的库。通过结合使用这两个库,我们可以在Go语言中轻松地加载和显示内联SVG图像。接下来,让我们一起来看看具体的实现步骤吧!

问题内容

我正在开发一个用 go 编写的应用程序。它使用 gotk3,安装了 librsvg,我可以使用 gtk.imagenewfromfile(file-path-to-svg) 创建(然后显示)svg 图像。

现在我想以编程方式从源代码中内联的 svg 创建图像......如下所示:

color := "#FF0000"
redSvg := 
  "\n" +
  "\n" +
  "\n" +
  "    \n" +
  ""

image, err := ImageNewFromSvg(redSvg)
.
.
.


func ImageNewFromSvg(svg string) (*gtk.Image, error) {
  ?
}

...我需要一些关于 imagenewfromsvg() 的实现的帮助。 gotk3 没有 imagenewfromsvg() api,但它有 imagenewfrompixbuf()

我尝试过从字符串(带有 svg 标记)创建 pixbuf,但我没能做到。

是否可以从源代码中定义的内联 svg 创建图像?如果是这样,imagenewfromsvg() 的实现是什么?

解决方法

您可以使用 gdk.pixbufnewfromdataonly 加载内联 svg,方法是将 svg 字符串作为字节片段传递给它,然后从中获取 pixbuf 并将其放入 gtk.imagenewfrompixbuf 以获得 *gtk.image 以在窗口中使用它。< br/> 这是您提到的 imagenewfromsvg 函数的正确实现之一:

func imagenewfromsvg(svg string) (*gtk.image, error){
  pixbuf, err := gdk.pixbufnewfromdataonly([]byte(svg))
  if err !=  nil {
    return nil, err
  }
  
  img, err := gtk.imagenewfrompixbuf(pixbuf)
  
  if err !=  nil {
    return nil, err
  }
  
  return img, nil
}

实际gtk程序中的使用示例:

package main

import (
    "log"

    "GitHub.com/gotk3/gotk3/gtk"
    "github.com/gotk3/gotk3/gdk"
)

func main() {
    gtk.Init(nil)

    win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
    if err != nil {
        log.Fatal("Unable to create window:", err)
    }
    win.SetTitle("Svg Example")
    win.Connect("destroy", func() {
        gtk.MainQuit()
    })


    color := "#FF0000"
    svgdata := "\n" +
               "\n" +
               "\n" +
               "    \n" +
               ""

    svgImage, err  := ImageNewFromSvg(svgdata)
    
    if err != nil {
        log.Fatal(err)
    }
    
    win.Add(svgImage)
    win.ShowAll()


    gtk.Main()
}  

func ImageNewFromSvg(svg string) (*gtk.Image, error){
  pixbuf, err := gdk.PixbufNewFromDataOnly([]byte(svg))
  if err !=  nil {
    return nil, err
  }
  
  img, err := gtk.ImageNewFromPixbuf(pixbuf)
  
  if err !=  nil {
    return nil, err
  }
  
  return img, nil
}

输出:

以上就是如何使用 GOTK3 和 librsvg 在 Go 中加载内联 SVG?的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何使用 GOTK3 和 librsvg 在 Go 中加载内联 SVG?

本文链接: https://lsjlt.com/news/562222.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用 GOTK3 和 librsvg 在 Go 中加载内联 SVG?
    php小编柚子将为大家介绍如何在Go语言中使用GOTK3和librsvg加载内联SVG。GOTK3是一个用于创建跨平台GUI应用程序的Go语言绑定库,而librsvg是一个用于渲染SV...
    99+
    2024-02-09
    go语言
  • 如何使用 Go 接口在 Bash 中加载文件?
    在本文中,我们将介绍如何使用 Go 接口在 Bash 中加载文件。Go 是一种高效的编程语言,它可以通过接口实现多态,同时 Bash 是一种常用的 shell 脚本语言,它可以用于处理文本和文件。通过结合使用这两种语言,我们可以实现在 Ba...
    99+
    2023-08-03
    接口 bash load
  • 如何在 Django 中加载和处理 Go 日志?
    Django 是一个非常流行的 Python Web 框架,而 Go 是一种快速、高效、可靠的编程语言。在许多项目中,我们可能需要在 Django 中加载和处理来自 Go 应用程序的日志。在本篇文章中,我们将介绍如何实现这一目标。 首先,我...
    99+
    2023-11-12
    日志 load django
  • 如何在Go中加载NPM缓存?
    在Go语言中,我们通常使用npm来安装和管理JavaScript依赖项。但是,每次安装依赖项时,npm都会从Internet上下载依赖项,这会消耗我们的时间和带宽。为了解决这个问题,npm提供了一个缓存目录,可以将下载的依赖项存储在本地,...
    99+
    2023-10-07
    npm 缓存 load
  • 如何在Go中加载数据类型和并发?
    Go语言是一种现代化的编程语言,其简单性、高效性和并发性,使其成为越来越多程序员的首选。在本文中,我们将介绍如何在Go中加载数据类型和并发。 数据类型 Go语言中有很多内置的数据类型,包括整数、浮点数、字符串、布尔值、切片、结构体等等。但是...
    99+
    2023-06-17
    load 数据类型 并发
  • 如何在Go编程中使用算法来加载路径?
    在Go编程中,使用算法来加载路径可以帮助我们更高效地处理文件和目录。在本文中,我们将介绍如何使用Go语言中的算法来加载路径,以便您可以更好地管理您的文件和目录。 首先,让我们来了解一些基本的算法知识。在计算机科学中,路径搜索算法是一种非常常...
    99+
    2023-10-09
    编程算法 load path
  • 如何在GO语言中使用Spring实现同步加载?
    在GO语言中使用Spring实现同步加载是一种非常常见的技术,它可以帮助我们加快应用的启动速度,提高应用的响应速度以及降低系统的延迟。在本文中,我们将介绍如何在GO语言中使用Spring实现同步加载,并给出相应的代码演示。 首先,我们需要了...
    99+
    2023-11-14
    同步 load spring
  • 如何在 Go 中加载接口文件?
    在 Go 中加载接口文件是一个非常常见的任务,特别是在构建 web 应用程序时。本文将介绍如何在 Go 中加载接口文件以及如何使用接口文件中定义的接口。 首先,让我们来看看什么是接口文件。接口文件是一种包含接口定义的文件。在 Go 中,接口...
    99+
    2023-09-02
    接口 文件 load
  • 在React、Vue项目中如何使用SVG
    这篇文章将为大家详细讲解有关在React、Vue项目中如何使用SVG,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在一些现代的扁平化设计网站,特别是移动端网站,经常会包含...
    99+
    2024-04-02
  • 如何使用 NumPy 加载 GO 对象?
    在生物信息学领域,GO(Gene Ontology)是一个常见的术语。GO定义了一组用于描述基因和基因产物功能的标准术语。它被广泛应用于基因功能注释、基因聚类、表达分析和生物信息学研究中的其他领域。本文将介绍如何使用 NumPy 加载 G...
    99+
    2023-07-11
    numpy 对象 load
  • 如何在Unix系统中使用Go语言进行HTTP加载?
    在Unix系统中,使用Go语言进行HTTP加载是一种非常常见的操作。Go语言的标准库中提供了一系列的HTTP处理函数,使得HTTP加载变得非常容易。在本文中,我们将介绍如何在Unix系统中使用Go语言进行HTTP加载,并且提供一些示例代码来...
    99+
    2023-08-15
    load http unix
  • 如何在java中使用类加载器
    今天就跟大家聊聊有关如何在java中使用类加载器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3...
    99+
    2023-06-14
  • 如何使用Go语言打包和加载HTTP模块?
    Go语言是一种简单、高效的编程语言,它被广泛应用于各种领域,特别是在Web开发中。HTTP模块是开发Web应用程序中必不可少的一部分,Go语言提供了许多方便的工具来打包和加载HTTP模块。在本文中,我们将介绍如何使用Go语言打包和加载HTT...
    99+
    2023-10-18
    http 打包 load
  • 如何使用Go语言加载容器?
    Go语言是一种流行的编程语言,它具有高效、可靠和易于使用的特点。在容器化的世界中,Go语言也是非常流行的一种语言。在本文中,我们将探讨如何使用Go语言加载容器。 Docker是目前最流行的容器化工具之一。在Go语言中,有一个名为"dock...
    99+
    2023-09-18
    关键字 load 容器
  • 如何在Java和JavaScript中加载LeetCode?
    LeetCode是一个非常受欢迎的在线编程学习平台,它提供了海量的算法题目和在线评测系统,可以帮助程序员提高算法和编程能力。在Java和JavaScript中加载LeetCode的方法略有不同,本文将详细介绍如何在Java和JavaScri...
    99+
    2023-09-29
    load leetcode javascript
  • 如何在PHP中使用Laravel容器加载?
    PHP是一种非常流行的服务器端脚本语言,它的应用领域非常广泛,可以用于开发Web应用程序、命令行工具、桌面应用程序等等。而Laravel是一款流行的PHP框架,它提供了丰富的功能和工具,可以帮助开发者更加高效地开发Web应用程序。其中,La...
    99+
    2023-09-16
    load laravel 容器
  • 如何在 PHP 中使用 Numpy 加载数据?
    PHP 是一种流行的编程语言,广泛应用于 Web 开发、数据处理等领域。而 Numpy 则是 Python 编程语言中用于科学计算的库,提供了大量的数值运算功能。在 PHP 中使用 Numpy,可以方便地进行数据处理和分析。本文将介绍如何在...
    99+
    2023-09-22
    自然语言处理 load numpy
  • 如何在Java中使用Apache库加载NumPy?
    NumPy是一个Python中非常流行的科学计算库,它提供了高效的多维数组操作和数学函数,被广泛应用于数据处理、机器学习等领域。但是,如果我们想在Java中使用NumPy,该怎么办呢?这时候,Apache库就可以派上用场了。 Apache...
    99+
    2023-11-14
    apache numy load
  • 如何使用go工作区在本地加载依赖项?
    php小编百草为你介绍如何使用go工作区在本地加载依赖项。在开发Go语言项目时,我们经常会使用到各种第三方库和依赖项。为了方便管理和加载这些依赖项,Go语言提供了一个强大的工作区(wo...
    99+
    2024-02-09
    go语言
  • 如何在Go语言中快速加载数据?
    Go语言是一门极具竞争力的编程语言,它在性能和开发效率方面都有很好的表现。在处理大量数据时,Go语言同样也有着出色的表现。在本文中,我们将介绍如何在Go语言中快速加载数据。 一、使用bufio包 Go语言的bufio包提供了一种快速读取大文...
    99+
    2023-11-15
    二维码 面试 load
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作