将像素绘制为自定义形状

时间:2013-07-16 12:11:00

标签: c# .net image-processing drawing pixel

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

我能想到这样做的唯一方法是将每个像素创建为usercontrol,其中DependancyProperties用于颜色和形状(绑定到路径可能?)。源自ItemsControl的父UC将在其自身内部创建数百个这样的像素UC。

这似乎是一场表演噩梦。

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

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

1 个答案:

答案 0 :(得分:0)

性能实际上非常令人印象深刻。我使用了UserControl(root),其中DependancyProperty用于Sprite,ItemsControl用于多重绑定。 MultiValueConverter将艺术点转换为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>