Comunidad Gambas-es
Como cargar SVG por código en los controles - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Como cargar SVG por código en los controles (/thread-633.html)



Como cargar SVG por código en los controles - tincho - 24-09-2021

Hola amigos.
Les presento un método que uso bastante seguido en mis programas ya que ademas de la excelente calidad gráfica que se logra, evita el molesto problema de las imágenes "negativas"
Como cargar los archivos
Código:
  For Each oCont In [pTools]
    For Each o In oCont.Children

      If Object.Type(o) = "ToolButton" Then
        z = (o.h - 8)
        sPic = "./svg" &/ o.Tag & ".svg"
        If Exist(sPic) Then
          svg = dsk.Contrary(sPic, "#0066b3")
          pic = Image.FromString(svg).Stretch(z, z).Picture
          o.Picture = pic
        Endif
      Endif
    Next
  Next

Como cambiar el color antes de aplicarlos
Código:
'' Replace a color in an svg file with one that contrasts with the background of the desktop theme

Public Function Contrary(sFile As String, sColor As String) As String

  Dim svg As String

  If Application.DarkTheme Then
    svg = Replace(File.Load(sFile), sColor & ";", "#eeeeee;")
  Else
    svg = Replace(File.Load(sFile), sColor & ";", "#000000;")
  Endif

  Return svg

End

Saludos.


RE: Como cargar SVG por código en los controles - vuott - 24-09-2021

Hola tincho,
que es "dsk" ?


RE: Como cargar SVG por código en los controles - tincho - 24-09-2021

(24-09-2021, 13:39)vuott escribió: Hola tincho,
que es "dsk" ?

Hola Vuott.
dsk es un módulo que aloja la función Contrary. Le puse ese nombre por Desktop, y en el pongo cosas que solo se usan en aplicaciones Desktop.
Saludos.