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.cs
Esta propiedad nos dice el tamaño que tenga la imagenpublic 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);
}
}
}
Reference
이 문제에 관하여(Cómo camambiar el color de una imagen SVG en C#), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/juandiegows/como-cambiar-el-color-de-una-imagen-svg-en-c-1j5m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)