2009-02-02 6 views
3

XAML/WPF로 단순한 작업을 수행하는 데 많은 문제가있는 것 같습니다. Rectangle 및 Ellipse와 같은 모양을 사용하여 일부 응용 프로그램의 다른 부분을 사용해야하는 XAML 기반 이미지를 만들었지 만 나는 이것을 어떻게하는지 알 수는 없다. 나는 Canvas를 Resource Dictionary에 저장할 수 있지만 다른 Window에서는 Canvas를 사용할 수 없다. 이 작업은 어떻게 수행됩니까? 이것은 프로젝트 전반에 걸쳐 사용하고 싶은 단순한 이미지입니다.
이미지의 크기를 조정할 수 있어야합니다. 경로를 저장하는 방법을 알고 있지만 이러한 도형에는 보존하려는 그라디언트 스타일이 포함되어 있으며 사각형이 경로 및 색상 데이터로 변환되는 방법을 알지 못합니다.XAML/WPF에서 여러 도형을 저장하고 검색하는 방법은 무엇입니까?

감사합니다.

답변

7

도면을 사용 KP 아드리안 제안 또는 DrawingImage 및 Image 컨트롤 같은 DrawingBrush를 사용하여 표시해야하지만, 당신이 그리는 사용할 수없는 경우 당신은 내부의 캔버스를 사용할 수 있습니다 VisualBrush.

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<Page.Resources> 
    <VisualBrush x:Key="Icon"> 
     <VisualBrush.Visual> 
      <Canvas Width="10" Height="10"> 
       <Ellipse Width="5" Height="5" Fill="Red"/> 
       <Ellipse Width="5" Height="5" Fill="Blue" Canvas.Left="5" Canvas.Top="5"/> 
      </Canvas> 
     </VisualBrush.Visual> 
    </VisualBrush> 
</Page.Resources> 
    <Rectangle Width="100" Height="100" Fill="{StaticResource Icon}"/> 
</Page> 
3

캔버스를 사용하여 이러한 리소스를 리소스 사전에 저장하지 않으려합니다. 지오메트리의 루트는 아마 DrawingBrush (당신은 이미지를 만드는 식 디자인을 사용하는 경우 특히) 같은 것입니다, 그 때문에 같은 리소스 사전에 추가 할 필요가있는 항목은 다음과 같습니다

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <DrawingBrush x:Key="YourResourceKey"> 
<DrawingBrush.Drawing> 
<DrawingGroup> 
<!-- This can change a lot, but a typical XAML file exported from a Design image would have the geometry of the image here as a bunch of Paths or GeometryDrawings --> 
</DrawingGroup> 
</DrawingBrush.Drawing> 
</ResourceDictionary> 

I 이 리소스 사전을 응용 프로그램에서 참조하는 방법을 알고 있다고 가정합니다.

리소스를 사용하려면 리소스를 적절한 속성에 지정하기 만하면됩니다. 모양 유형 이미지의 경우 Rectangle의 Fill 속성과 같은 값을 지정할 수 있습니다 (다른 방법도 많이 있지만 간단합니다). 여기에 하나의 예입니다 :

<Button> 
    <Grid> 
     <Rectangle Fill="{StaticResource YourResourceKey}" /> 
    </Grid> 
</Button>