반응형
System.Drawing.Color 값 설정
안녕하세요 어떻게 R G B
값 을 설정 System.Drawing.Color.G
합니까?
어떤처럼 System.Drawing.Color.G=255;
그것의 읽기 전용 있기 때문에 허용되지 않습니다
Property or indexer 'System.Drawing.Color.G' cannot be assigned toit is read only
Color
사용자 지정 R G B
값 을 할당 하여 개체 를 생성하기 만하면 됩니다.
정적 FromArgb 메서드를 사용하여 색상을 만들 수 있습니다 .
Color redColor = Color.FromArgb(255, 0, 0);
다음과 같은 오버로드를 사용하여 알파를 지정할 수도 있습니다 .
Color
구조는 불변의 특정 인스턴스가 생성되면 그 속성의 값이 변경 될 수없는 것을 의미한다 (모든 구조 정말로되어야 참조).
대신 원하는 속성 값으로 구조 의 새 인스턴스 를 만들어야합니다 . 구성 요소 RGB 값을 사용하여 색상을 만들려면 다음 FromArgb
메서드 를 사용해야합니다 .
Color myColor = Color.FromArgb(100, 150, 75);
Color.FromArgb 메서드를 사용하여 새 색상 구조를 만들어야합니다.
var newColor = Color.FromArgb(0xCC,0xBB,0xAA);
하나의 색상 구성 요소 만 변경하도록 확장 할 수 있습니다.
static class ColorExtension
{
public static Color ChangeG(Color this color,byte g)
{
return Color.FromArgb(color.A,color.R,g,color.B);
}
}
그런 다음 이것을 사용할 수 있습니다.
yourColor = yourColor.ChangeG(100);
다음과 같이 할 수 있습니다.
Color c = Color.FromArgb(red, green, blue); //red, green and blue are integer variables containing red, green and blue components
using System;
using System.Drawing;
public struct MyColor
{
private byte a, r, g, b;
public byte A
{
get
{
return this.a;
}
}
public byte R
{
get
{
return this.r;
}
}
public byte G
{
get
{
return this.g;
}
}
public byte B
{
get
{
return this.b;
}
}
public MyColor SetAlpha(byte value)
{
this.a = value;
return this;
}
public MyColor SetRed(byte value)
{
this.r = value;
return this;
}
public MyColor SetGreen(byte value)
{
this.g = value;
return this;
}
public MyColor SetBlue(byte value)
{
this.b = value;
return this;
}
public int ToArgb()
{
return (int)(A << 24) || (int)(R << 16) || (int)(G << 8) || (int)(B);
}
public override string ToString ()
{
return string.Format ("[MyColor: A={0}, R={1}, G={2}, B={3}]", A, R, G, B);
}
public static MyColor FromArgb(byte alpha, byte red, byte green, byte blue)
{
return new MyColor().SetAlpha(alpha).SetRed(red).SetGreen(green).SetBlue(blue);
}
public static MyColor FromArgb(byte red, byte green, byte blue)
{
return MyColor.FromArgb(255, red, green, blue);
}
public static MyColor FromArgb(byte alpha, MyColor baseColor)
{
return MyColor.FromArgb(alpha, baseColor.R, baseColor.G, baseColor.B);
}
public static MyColor FromArgb(int argb)
{
return MyColor.FromArgb(argb & 255, (argb >> 8) & 255, (argb >> 16) & 255, (argb >> 24) & 255);
}
public static implicit operator Color(MyColor myColor)
{
return Color.FromArgb(myColor.ToArgb());
}
public static implicit operator MyColor(Color color)
{
return MyColor.FromArgb(color.ToArgb());
}
}
참고 URL : https://stackoverflow.com/questions/6016456/set-system-drawing-color-values
반응형
'developer tip' 카테고리의 다른 글
JVM에서 JIT 컴파일 된 코드를 보는 방법은 무엇입니까? (0) | 2020.10.21 |
---|---|
C #은 반환 형식 공분산을 지원합니까? (0) | 2020.10.21 |
Moq, SetupGet, Mocking a property (0) | 2020.10.21 |
SQL-varchar 데이터 유형을 datetime 데이터 유형으로 변환하여 값이 범위를 벗어났습니다. (0) | 2020.10.21 |
이온 빌드 Android | (0) | 2020.10.21 |