2013-07-16 2 views
0

소스 이미지가 있으므로 http://notes.ericwillis.com/2009/11/pixelate-an-image-with-csharp/에있는 방법을 사용하여 픽셀로 축소하고 채워진 원, 중공 원 또는 사각형으로 각 픽셀을 그립니다 (각 실제 픽셀은 화면에서 약 15 픽셀이어야 함).).사용자 정의 도형으로 픽셀 그리기

내가 생각할 수있는 유일한 방법은 usercontrolDependancyProperties (색칠 및 모양 (어쩌면 경로에 바인딩되어 있음)?)으로 각 픽셀을 만드는 것입니다. ItemsControl에서 파생 된 상위 UC는 수백 개의 이러한 픽셀 UC를 자체 내부에 생성합니다.

이것은 성능 악몽처럼 보입니다.

편집 : 일부 컨텍스트를 제공하기 위해 이것은 픽셀 아트 생성 앱용입니다. X, Y 및 Color 속성이있는 데이터베이스에 각 '픽셀'을 저장해야합니다.

이것을 달성하는 가장 좋은 방법입니까?

+0

. 크기 증가가 일정하면 간단해야합니다 – mao47

+0

원본 이미지를 변형하는 것이 왜 좋습니까? –

+0

이 방법에 대해 자세히 설명해 주시겠습니까? 이상적으로 각 '픽셀'에 대한 16 진 코드가있는 툴팁을 추가하고 싶습니다. 따라서 GDI +를 사용하면 효과가 없습니다. 서브 픽셀을 만드는 방법에 대해서는 잘 모르겠습니다. – Echilon

답변

0

성능은 실제로 매우 인상적입니다. 나는 UserControl (뿌리)을 사용했다. 스프라이트에는 DependancyProperty, 멀티 바인딩에는 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> 
관련 문제