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 или около того, и посмотрите, приближает ли это вас.

Другие вопросы по тегам