WPF Ставящий цели Раскадровки в XAML

Моя первая мысль об этом, "как генерировать векторы N в пространстве, которые максимизируют расстояние друг от друга".

Вы видите, что RGB (или любой другой масштаб, который Вы используете, который формирует основание в цветовом пространстве) является просто векторами. Смотрите на Случайная точка, Выбирающая . Как только у Вас есть ряд векторов, которые максимизируются независимо, можно сохранить их в хэш-таблице или чем-то на потом, и просто выполнить случайные вращения на них для получения всех цветов, Вы требуете, чтобы были максимально друг кроме друга!

Взгляды об этой проблеме больше, было бы лучше отобразить цвета линейным способом, возможно (0,0,0) в †’ (255,255,255) лексикографически, и затем распределить их равномерно.

я действительно не знаю, как хорошо это будет работать, но это должно с тех пор, позволять нам сказать:

n = 10

мы знаем, что у нас есть 16 777 216 цветов (256^3).

Мы можем использовать Алгоритм Застежек 515 для нахождения лексикографически индексированного цвета. \frac {\binom {256^3} {3}} {n} * i . Необходимо будет, вероятно, отредактировать алгоритм, чтобы избежать переполнения и вероятно добавить некоторые незначительные улучшения скорости.

5
задан Dave Clemmer 24 August 2011 в 19:27
поделиться

1 ответ

Если вы не устанавливаете явную цель, цель должна быть элементом, к которому применяется анимация. Я бы определил стиль с триггером / анимацией на нем и применил бы стиль к тем конкретным кнопкам, для которых вы хотите продемонстрировать это поведение. Например:

<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
    <Style.Resources>
        <Storyboard x:Key="OnMouseEnterStoryboard">
            <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" To="180" />
        </Storyboard>
        <Storyboard x:Key="OnMouseLeaveStoryboard">
            <DoubleAnimation BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" To="0" />
        </Storyboard>
    </Style.Resources>
    <Style.Triggers>
        <EventTrigger RoutedEvent="Mouse.MouseLeave">
            <RemoveStoryboard BeginStoryboardName="OnMouseEnterStoryboard_BeginStoryboard"/>
            <BeginStoryboard x:Name="OnMouseLeaveStoryboard_BeginStoryboard" Storyboard="{StaticResource OnMouseLeaveStoryboard}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseEnter">
            <BeginStoryboard x:Name="OnMouseEnterStoryboard_BeginStoryboard" Storyboard="{StaticResource OnMouseEnterStoryboard}"/>
            <RemoveStoryboard BeginStoryboardName="OnMouseLeaveStoryboard_BeginStoryboard"/>
        </EventTrigger>
    </Style.Triggers>
    <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
    <Setter Property="RenderTransform">
        <Setter.Value>
            <RotateTransform/>
        </Setter.Value>
    </Setter>
</Style>

А затем на каждой кнопке вы хотите вести себя следующим образом:

<Button Style="{StaticResource MyButtonStyle}" ... />
16
ответ дан 18 December 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: