Cómo camambiar el color de una imagen SVG en C#

6176 단어 svgcsharpcodigolimpio


Vamos aprender a camambiar el color de una imagen SVG en un proyecto de visual studio 2017, 2019 en C#.

Lo Primero es crear nuevo proyecto y crear un diseño que nos permita cambiar el color a una imagen SVG.

아시





Cómo estos componentes



*** 프로젝트 링크 *** https://github.com/JuanDiegogit/CambiarColorImagenSVG

Si te preguntas cómo se hacen los botones redondeado, para eso instalamos Guna.ui2



Una vez tengamos el Diseño, lo Siguiente a realizar es la instalación del paquete de SVG desde el administrador de paquete de visual studio.



y buscar el paquete SVG para posteriormente instalarlo.



Una vez instalado el paquete procedemos a crear una Clase llamada "SVGParser.cs"dentro de una carpeta "SVG", la clase la puedes llamar cómo desees pero debe cumplir la misma función (obtener y ajustar el archivo SVG y convertir el archivo SVG a 비트맵) y debe ser estática.


Vamos a ver que contiene la clase SVGparser.csEsta propiedad nos dice el tamaño que tenga la imagen

public static Size MaximSize { get; set; }


Bitmap과 SVG 이미지 변환 방법

public static Bitmap GetBitmapFromSVG(string filePath)
{
SvgDocument svgDocument = SVGParser.GetSvgDocument(filePath);
Bitmap bitmap = svgDocument.Draw();
return bitmap;
}


Este método ajusta el archivo SVG respeto al tamaño máximo del contenedor que se define al asignar la propiedad MaximSize
private static SvgDocument AdjustSize(SvgDocument document)
{
document.Width = MaximSize.Width;
document.Height = MaximSize.Height;
return document;
}


Este último abre el archivo SVG y lo ajusta con el método anterior

public static SvgDocument GetSvgDocument(string filePath)
{
SvgDocument document = SvgDocument.Open(filePath);
return AdjustSize(document);
}


Ya con esto hemos terminado la clase SVGparser.cs el resto de la programación se hará en el formulario.

En el evento de clic del botón de buscar Abrimos el archivo SVG


노타
La parte naranja es un PictureBox, one que tiene el mismo fondo del formulario y no se nota simple vista.



//Declaración de variables
private string selectedPath;
private Svg.SvgDocument svgDocument;

 private void AbrirSVG()
        {
            DialogResult selectResult = filePicker.ShowDialog();
            if (selectResult == System.Windows.Forms.DialogResult.OK)
            {

                SVGParser.MaximSize = new Size(pickImagen.Width, pickImagen.Height);
                selectedPath = filePicker.FileName;
                txtBuscar.Text = selectedPath;
                svgDocument = SVGParser.GetSvgDocument(selectedPath);
                nupAncho.Value = (int) svgDocument.Width.Value;
                nupAlto.Value = (int)  svgDocument.Height.Value;
                pickImagen.Image = SVGParser.GetBitmapFromSVG(selectedPath);
                Guardar.FileName = filePicker.FileName;
            }
        }



Creamos una método que nos permita cambiar un color por otro en el archivo SVGDocument.

foreach (Svg.SvgElement item in svgDocument.Children)
{
ChangeFill(item, btnColorOrigen.BackColor, btnColorDestino.BackColor);
}



private void ChangeFill(SvgElement element, Color sourceColor, Color replaceColor)
        {
            try
            {
                if (element is SvgPath)
                {

                    if (((element as SvgPath).Fill as SvgColourServer).Colour.ToArgb() == sourceColor.ToArgb())
                    {
                        (element as SvgPath).Fill = new SvgColourServer(replaceColor);
                    }
                }
            }
            catch (Exception)
            {


            }

            if (element.Children.Count > 0)
            {
                foreach (var item in element.Children)
                {
                    ChangeFill(item, sourceColor, replaceColor);
                }
            }

        }

좋은 웹페이지 즐겨찾기