如何从RGB颜色创建WPF图像?

时间:2011-04-21 21:27:33

标签: c# .net wpf graphics treeview

我在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项目,这会产生影响。

1 个答案:

答案 0 :(得分: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>

此方法使用直接绑定到color属性,因此不需要创建图像(例如,通过转换器)。

但绝对建议您尝试一下,看看它是否适用于数以千计的物品。