문제

저는 윈도우폰을 사용하고 있습니다.문제는 그것이다 가지고 있지 않다 그만큼 Color.FromName 대신에 그것은 Color.FromArgb.

직사각형이 있고 읽고 있는 파일의 색상에 따라 채우기 색상을 설정하고 싶습니다.예를 들어colors라는 파일에 "Red"를 저장했습니다.나는 그것을 읽고 그것을 다음과 같은 문자열로 보냅니다. LpColor 이제 그 안에 "Red"라는 텍스트가 들어 있을 것입니다.

이제 어떻게 사용하나요? LpColor ~에 Rectangle.Fill = ....Rectangle.Fill = LpColor를 수행하면 작동하지 않습니다.

다음은 내 파일을 읽는 방법에 대한 코드입니다.

IsolatedStorageFileStream readColor = store.OpenFile("/contactColor.txt", FileMode.Open, FileAccess.Read);
using (StreamReader contactColor = new StreamReader(readColor))
{
  var color = contactColor.ReadToEnd();
  LpColor = color;
}
도움이 되었습니까?

해결책

문자열(빨간색)로 저장해야 하는 경우 문자열을 다시 색상으로 변환하는 변환기 메서드를 작성할 수 있습니다.가지고 있는 색상의 수에 따라 방법이 복잡해지기 때문에 색상을 이름으로 저장하는 것을 다시 생각해보고 싶을 수도 있습니다. ARGB와 이름의 조합으로 저장할 수도 있지 않을까요?해당 정보를 보관하기 위해 클래스를 사용하시겠습니까?많은 옵션이 있습니다.

어쨌든 간단한 변환기는 다음과 같은 작업을 수행합니다.

private SolidColorBrush ColorNameToBrush(string colorName)
{
    Color color = Color.FromArgb(0,0,0,0);
    if (colorName == "Red")
    {
        color = new Color() { R = 255, G = 0, B = 0};
    }
    else if ...
    {

    }

    return new SolidColorBrush(color);
}

그러나 문자열이 많은 경우 끝없는 if-else-if 대신 스위치 문을 사용하는 것이 더 나은 아이디어일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top