LinearGradientBrush не ведет себя как положено
У меня есть LinearGradientBrush
определяется для использования при построении текстуры в MeshGeometry3D следующим образом. Идея состоит в том, что значения на абсолютных концах кисти должны быть нанесены в серебре:
<LinearGradientBrush x:Key="GrayOmitOutOfRangeIncreasing" StartPoint="0,0.5"
EndPoint="1,0.5" >
<GradientStop Color="Silver" Offset="0.00" />
<GradientStop Color="#000064" Offset="0.00000000000000014" />
<GradientStop Color="#000091" Offset="0.043" />
<GradientStop Color="#0000BE" Offset="0.087" />
<GradientStop Color="#3C00B2" Offset="0.130" />
<GradientStop Color="#7800A5" Offset="0.173" />
... and other gradient stops...
<GradientStop Color="#FCE800" Offset="0.913" />
<GradientStop Color="#FCF200" Offset="0.957" />
<GradientStop Color="#FCFC00" Offset="0.99999" />
<GradientStop Color="Silver" Offset="0.99999979" />
<GradientStop Color="Silver" Offset="1" />
</LinearGradientBrush>
Вместо этого значения, которые преобразуются в диапазон от 0 до 1 перед построением, приобретают затенение соседнего цвета, как на рисунке ниже:
Как я могу получить изображение, которое я хочу?
1 ответ
Решение
Посмотрите, как они определены:
<GradientStop Color="#FCFC00" Offset="0.99999" />
<GradientStop Color="Silver" Offset="0.99999979" />
<GradientStop Color="Silver" Offset="1" />
Это означает, что... что, 0,001% сетки будет градиентом от FCFC00 к серебру. Это не будет обнаружено. Переместите предпоследний серебряный градиентный стоп до 0,98 или около того, и посмотрите, приближает ли это вас.