Как создать изображение WPF из цвета RGB?

2

У меня есть несколько цветов для объектов Layer, которые показаны в TreeView. Сейчас я использую что-то вроде этого:

<GridViewColumn Width="300">
    <GridViewColumnHeader Content="Layers" />
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <StackPanel MouseLeftButtonDown="Layers_MouseLeftButtonDown" Orientation="Horizontal">
                <Image Width="15"
                        Height="15"
                        Source="{Binding ImageFromColor}" />
                <TextBlock Text="{Binding Name}" />
            </StackPanel>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

Исходные значения цвета будут доступны (привязаны) из самого Layer, так что:

layer.Color

типа System.Drawing.Color. Но я могу изменить тип, чтобы быть чем-то другим, если бы это облегчило ситуацию.

Какой лучший способ сделать это с точки зрения производительности и элегантности?

У меня будет несколько тысяч TreeView элементов, которые имеют значение.

Теги:
wpf
graphics
treeview

1 ответ

4
Лучший ответ

Я не пробовал сам с TreeView (только с ListBox), но, возможно, стоит попробовать:

<DataTemplate>
    <!-- your additional container -->
        <Canvas Width="15" Height="15">
             <Canvas.Background>
                 <SolidColorBrush Color="{Binding Path=ColorProperty}" />
             </Canvas.Background>
        </Canvas>
    <!-- end of container -->
</DataTemplate>

Этот подход использует прямую привязку к свойству цвета, поэтому изображения не нужно создавать (например, конвертером).

Но определенно рекомендуется попробовать его, чтобы увидеть, работает ли он с тысячами элементов.

  • 0
    Спасибо, но это ColorProperty, какого типа это должно быть? System.Drawing.Color? Также вы использовали Canvas, что будет лучше, чем Image? Просто интересуюсь.
  • 0
    Он работает с System.Windows.Media.Color, поэтому я буду его использовать.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню