색상에서 브러시로 변환


110

어떻게이 변환 할 ColorA와 BrushC #으로?

답변:


139

이것은입니다 ColorBrush....

변환 할 수 없습니다. 새 브러시를 만들어야합니다 ....

SolidColorBrush brush = new SolidColorBrush( myColor );

이제 XAML에서 필요한 경우 사용자 지정 값 변환기를 만들어 바인딩에서 사용할 수 있습니다.


8
이전 버전과의 호환성을 위해 .NET Framework 3.0부터 사용할 수있는 ( ) 대신 .NET Framework 1.1부터 사용할 수있는 SolidBrush( System.Drawing) 를 사용하는 것이 좋습니다 . SolidColorBrushSystem.Windows.Media
BillyJoe

35
Brush brush = new SolidColorBrush(color);

반대의 경우 :

if (brush is SolidColorBrush colorBrush)
    Color color = colorBrush.Color;

아니면 그런 것.

모든 브러시가 색상은 아니지만 모든 색상을 (SolidColor) Brush로 바꿀 수 있다는 점이 포인트입니다.


브러시 색상!
raiserle

@raiserle : 참고로 질문 내용 I want to convert from Brush to Color in c#은 제목이 반대 였을 때였습니다 .
HB

25
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )

18

이것을 사용할 수 있습니다.

new SolidBrush(color)

여기서 색상은 다음과 같습니다.

Color.Red

또는

Color.FromArgb(36,97,121))

또는 ...


2
이전 버전과의 호환성을 위해 SolidBrush( System.Drawing)는 .NET Framework 1.1부터 사용할 수 있고 SolidColorBrush( System.Windows.Media)는 .NET Framework 3.0부터 사용할 수 있기 때문에이 대답이 더 좋습니다 .
BillyJoe

2

이전에 같은 문제가 있었는데 여기에 색상 변환을 해결 한 수업이 있습니다.

여기 U go, 내 클래스를 다중 색상 변환으로 사용

using System;
using System.Windows.Media;
using SDColor = System.Drawing.Color;
using SWMColor = System.Windows.Media.Color;
using SWMBrush = System.Windows.Media.Brush;

//Developed by امین امیری دربان
namespace APREndUser.CodeAssist
{
    public static class ColorHelper
    {
        public static SWMColor ToSWMColor(SDColor color) => SWMColor.FromArgb(color.A, color.R, color.G, color.B);
        public static SDColor ToSDColor(SWMColor color) => SDColor.FromArgb(color.A, color.R, color.G, color.B);
        public static SWMBrush ToSWMBrush(SDColor color) => (SolidColorBrush)(new BrushConverter().ConvertFrom(ToHexColor(color)));
        public static string ToHexColor(SDColor c) => "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
        public static string ToRGBColor(SDColor c) => "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
        public static Tuple<SDColor, SDColor> GetColorFromRYGGradient(double percentage)
        {
            var red = (percentage > 50 ? 1 - 2 * (percentage - 50) / 100.0 : 1.0) * 255;
            var green = (percentage > 50 ? 1.0 : 2 * percentage / 100.0) * 255;
            var blue = 0.0;
            SDColor result1 = SDColor.FromArgb((int)red, (int)green, (int)blue);
            SDColor result2 = SDColor.FromArgb((int)green, (int)red, (int)blue);
            return new Tuple<SDColor, SDColor>(result1, result2);
        }
    }

}

1

Windows Forms와 WPF가 혼합 된 응용 프로그램으로 작업하는 경우 System.Drawing.Color를 System.Windows.Media.Color로 변환하려고 시도하는 추가 복잡함이있을 수 있습니다. 이 작업을 수행하는 더 쉬운 방법이 있는지 확실하지 않지만 이렇게했습니다.

System.Drawing.Color MyColor = System.Drawing.Color.Red;
System.Windows.Media.Color = ConvertColorType(MyColor);

System.Windows.Media.Color ConvertColorType(System.Drawing.Color color)
{
  byte AVal = color.A;
  byte RVal = color.R;
  byte GVal = color.G;
  byte BVal = color.B;

  return System.Media.Color.FromArgb(AVal, RVal, GVal, BVal);
}

그런 다음 앞에서 언급 한 기술 중 하나를 사용하여 브러시로 변환 할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.