반응형
색상에서 브러시로 변환하다
변환 방법Color
에 대해서Brush
C#에서요?
이거예요Color
로.Brush
....
변환할 수 없습니다.새로운 브러시를 만들어야 합니다.
SolidColorBrush brush = new SolidColorBrush( myColor );
XAML에서 필요한 경우 커스텀 값 변환기를 만들어 바인딩에 사용할 수 있습니다.
Brush brush = new SolidColorBrush(color);
반대로:
if (brush is SolidColorBrush colorBrush)
Color color = colorBrush.Color;
아니면 그런 비슷한 것.
포인트는 모든 브러시가 색상은 아니지만 모든 색상을 (SolidColor)로 바꿀 수 있습니다.솔질하다.
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )
다음을 사용할 수 있습니다.
new SolidBrush(color)
여기서 color는 다음과 같습니다.
Color.Red
또는
Color.FromArgb(36,97,121))
또는...
Windows Forms 와 WPF 가 혼재하고 있는 애플리케이션을 사용하고 있는 경우는, 시스템의 변환을 시도하는 것이 한층 더 복잡해질 가능성이 있습니다.그림그리기.시스템에 색을 적용합니다.창문들.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);
}
그런 다음 앞에서 설명한 기법 중 하나를 사용하여 브러시로 변환할 수 있습니다.
이전에도 같은 문제가 있었습니다만, 여기 색변환을 해결한 수업이 있습니다. 그것을 사용하고 즐기십시오.
자, 내 클래스에서 멀티 컬러로 변환 사용
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);
}
}
}
가장 쉬운 방법은 도우미, 변환기, 이상한 미디어 참조 없음입니다.한 줄만:
System.Drawing.Brush _Brush = new SolidBrush(System.Drawing.Color.FromArgb(this.ForeColor.R, this.ForeColor.G, this.ForeColor.B));
형제자매 또는 부모의 브러시를 사용하는 것으로 충분한 경우가 많습니다.또한 형제자매 또는 부모의 Foreground 속성을 검색하여 wpf에서 쉽게 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/5641078/convert-from-color-to-brush
반응형
'prosource' 카테고리의 다른 글
Web Publish 비밀번호가 Azure 관리자 비밀번호와 동일하지 않습니까? (0) | 2023.04.23 |
---|---|
이름이 붙은 파이프는 무엇입니까? (0) | 2023.04.23 |
KVO(Key-Value Observation)는 Swift에서 사용할 수 있습니까? (0) | 2023.04.23 |
로컬 변경 내용이 병합에 의해 덮어쓰기된다는 'git pull' 오류를 무시하려면 어떻게 해야 합니까? (0) | 2023.04.23 |
Azure 기능의 DI (0) | 2023.04.23 |