0

我有一个源图像,我想使用http://notes.ericwillis.com/2009/11/pixelate-an-image-with-csharp/中的方法将其缩小为像素,并将每个像素绘制为实心圆, 空心圆或正方形(每个实际像素在屏幕上应约为 15px)。

我能想到的唯一方法是将每个像素创建usercontrolDependancyProperties颜色和形状(可能绑定到路径?)。派生自的父 UCItemsControl将在其内部创建数百个这样的像素 UC。

不过,这似乎是一场性能噩梦。

编辑:为了给出一些上下文,这是一个像素艺术生成应用程序。我需要将每个“像素”存储在具有 X、Y 和颜色属性的数据库中。

这是实现这一目标的最佳方式吗?

4

1 回答 1

0

性能实际上非常令人印象深刻。我使用了一个UserControl(root),一个DependancyProperty用于 Sprite,一个用于ItemsControl多重绑定。AMultiValueConverter将艺术的点转换为Path元素,同时考虑到画布的大小:

<ItemsControl>
    <ItemsControl.ItemsSource>
        <MultiBinding Converter="{StaticResource dotToPixelConverter}">
            <Binding Path="Sprite.Beads" ElementName="root"/>
            <Binding Path="Sprite.Width" ElementName="root"/>
            <Binding Path="Sprite.Height" ElementName="root"/>
            <Binding Path="ActualWidth" ElementName="root"/>
            <Binding Path="ActualHeight" ElementName="root"/>
        </MultiBinding>
    </ItemsControl.ItemsSource>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>
于 2013-07-18T12:44:37.730 回答