2010-11-18 4 views
3

LinearGradientBrush를 사용하여 악센트 색상의 일부 요소 (직사각형과 타원)를 투명하게 변하고 싶습니다. 그러나 투명 색상은 항상 색상이며 "투명"색상이 # 00FFFFFF 인 것처럼 보입니다 - 흰색은 0 % 불투명입니다.투명 악센트 색상

PhoneAccentColor에서 으로 퇴색하고 싶습니다. PhoneTransparentAccentColor. 따라서 내 액센트 색상이 빨간색이면 # 00FF0000으로 희미 해지고 싶습니다. 녹색이면 # 0000FF00으로 희미 해지고 싶습니다.

투명한 악센트를 위해 내장 된 색상 자원을 찾을 수 없으므로 여기에 어떤 옵션이 있습니까? 나는 아래의 옵션을 시도했지만 아무런 성공도 없었고 정상적인 검색 채널로이 주제를 많이 찾을 수 없으므로 여기서 내가 무엇을 놓치고 있는지 잘 모르겠습니다. 내가 생각 해낸

제안은 (그러나 진짜 성공을 앞서 언급 한대로) :

  • 뒤에 코드에서 사용자 정의 자원을 생성하고 응용 프로그램을 다양한 리소스 사전에 밀어 넣?
  • 내 ViewModel의 속성을 Color로 노출하고 바인딩 할 수 있습니까?
+1

XAML에서 직접 색상을 할당 할 수없는 이유가 있습니까? # 00FF0000은 색상에 대해 완전히 유효한 값입니다. – Stephan

+0

그 이유는 악센트 색상이 사용자 환경 설정이므로 분명히하지 않는 것이 유감입니다. # 00FF0000은 악센트 색상이 빨간색 일 때 좋은 값입니다. 그러나 사용자가 액센트 색상을 다른 색상 (예 : 녹색)으로 변경하면 녹색에서 투명으로 페이드가 녹색 100 %에서 빨간색 0 %로 변경됩니다. 0 % 액센트 색상을 사용하고 싶습니다 - 녹색 액센트의 경우 # 0000FF00입니다. – mikeesouth

답변

4

저는 xaml에서 투명 액센트 색상을 직접 지정하는 방법을 생각할 수 없습니다. 나는 가능한 몇 가지 해결책을 가지고있다.

가능한 경우 색상 자체가 아닌 객체의 불투명도에 애니메이션을 적용 할 수 있습니다. 당신의

var accentColor = (Color)Application.Current.Resources["PhoneAccentColor"]; 
var transparentAccentColor = accentColor.A = 0; 

그런 다음 리소스로 색상을 저장하고 XAML에서 참조 할 수있다 (아마시 시작) 코드에서 색상을 생성 할 수 있습니다.

Application.Current.Resources.Add("TransparentPhoneAccentColor", transparentAccentColor); 

희망이 있습니다.

1

일반적으로 색상 지원이 가능하기 때문에 전화기의 그라데이션을 사용하지 마십시오.

LinearGradientBrush에서 OpacityMask을 사용하여 원하는 결과를 얻을 수 있습니다.

악센트 색상을 사용하는 경우 귀하의 경우에는 적용 할 수 없지만, 그라디언트가 포함 된 이미지를 생성 할 수 있다면 밴딩을 피하는 방법에 대해서는 How can I correct color banding in windows phone 7?을 참조하십시오.