0
WPFMediakit을 사용하고 있으며 흑백 컨트롤을 사용하고 있습니다.이 컨트롤의 색조를 변경하고 싶습니다. 개별적으로 wpf 컨트롤의 색조 수동 조작을 수행 할 수 있습니까?WPF 사용자 컨트롤 색조 레벨
WPFMediakit을 사용하고 있으며 흑백 컨트롤을 사용하고 있습니다.이 컨트롤의 색조를 변경하고 싶습니다. 개별적으로 wpf 컨트롤의 색조 수동 조작을 수행 할 수 있습니까?WPF 사용자 컨트롤 색조 레벨
회색 음영 이미지에서 사용할 수있는 간단한 방법은 색조를 적용 할 컨트롤 위에 반투명 사각형을 넣는 것입니다. 이 방법에는 아래의 방법에는 제한이 없습니다.
예컨대
회색은 아무것도하지 않습니다 그레이 스케일 이미지의 색조를 변화에는 채도가 없습니다으로<Grid>
<Image Source="C:\Windows\Web\Wallpaper\img1.jpg" />
<Rectangle Fill="#86004EFF" />
</Grid>
이 this one 같은 색조의 변화가 당신을 파란색 도움이되지 것 착색합니다.
/// <summary>Hue</summary>
/// <minValue>0</minValue>
/// <maxValue>1</maxValue>
/// <defaultValue>0</defaultValue>
float Hue : register(c0);
/// <summary>Saturation</summary>
/// <minValue>0</minValue>
/// <maxValue>1</maxValue>
/// <defaultValue>0</defaultValue>
float Saturation : register(c1);
sampler2D Samp : register(S0);
float3 hsv_to_rgb(float3 HSV)
{
float3 RGB = HSV.z;
float var_h = HSV.x * 6;
float var_i = floor(var_h); // Or ... var_i = floor(var_h)
float var_1 = HSV.z * (1.0 - HSV.y);
float var_2 = HSV.z * (1.0 - HSV.y * (var_h-var_i));
float var_3 = HSV.z * (1.0 - HSV.y * (1-(var_h-var_i)));
if (var_i == 0) { RGB = float3(HSV.z, var_3, var_1); }
else if (var_i == 1) { RGB = float3(var_2, HSV.z, var_1); }
else if (var_i == 2) { RGB = float3(var_1, HSV.z, var_3); }
else if (var_i == 3) { RGB = float3(var_1, var_2, HSV.z); }
else if (var_i == 4) { RGB = float3(var_3, var_1, HSV.z); }
else { RGB = float3(HSV.z, var_1, var_2); }
return (RGB);
}
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 col = tex2D(Samp, uv);
float gray = col.r*0.3 + col.g*0.59 + col.b * 0.11;
return float4(hsv_to_rgb(float3(Hue,Saturation,gray)),col.w);
}
체크 아웃 Shazzam을 사용자 정의 효과 작업을위한 : 그것은이 같은 포토샵에서 colourize 기능처럼 동작 있도록 그러나 그 효과를 조정할 수 있습니다.