0

ソース画像があります。 http://notes.ericwillis.com/2009/11/pixelate-an-image-with-csharp/の方法を使用してピクセルに縮小し、各ピクセルを塗りつぶされた円として描画します、中空の円または正方形 (各実際のピクセルは画面上で約 15 ピクセルである必要があります)。

これを行う唯一の方法は、各ピクセルを色と形状のusercontrolwithとして作成することです(おそらくパスにバインドされていますか?)。DependancyPropertiesから派生した親 UCItemsControlは、それ自体の内部にこれらのピクセル UC を何百も作成します。

ただし、これはパフォーマンスの悪夢のようです。

編集:コンテキストを提供するために、これはピクセル アート生成アプリ用です。X、Y、および色の属性を持つデータベースに各「ピクセル」を保存する必要があります。

これはこれを達成するための最良の方法ですか?

4

1 に答える 1

0

実際、パフォーマンスは非常に印象的です。UserControl(root)を使用し、 DependancyPropertyfor Sprite とItemsControlを multibinding で使用しました。Aは、キャンバスのサイズを考慮して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>
于 2013-07-18T12:44:37.730 に答える