2012-02-13 4 views
0

이것은 간단하지만 나에게는 적합하지 않습니다. 내 DB에서 이미지를 표시하고 동일한 좌표계를 사용하여 동일한 DB의 다각형을 오버레이하고 싶습니다.중첩 된 다각형이있는 이미지 표시

<Image Name="imgColl" Stretch="Fill" MaxWidth="190" MinHeight="70"> 
    <Image.Source> 
     <DrawingImage> 
      <DrawingImage.Drawing> 
       <DrawingGroup> 
        <ImageDrawing ImageSource="{Binding ImageData}" Rect="0,0,590,590"/> 
        <GeometryDrawing Geometry="{Binding Coordinates, StringFormat=M\{0\}}"> 
         <GeometryDrawing.Pen> 
          <Pen Thickness="4" LineJoin="Bevel" Brush="OrangeRed"/> 
         </GeometryDrawing.Pen> 
        </GeometryDrawing> 
       </DrawingGroup> 
      </DrawingImage.Drawing> 
     </DrawingImage> 
    </Image.Source> 
</Image> 

ImageDrawing 개체에 Rect를 지정해야한다는 것을 알게되었습니다. 이것은 내가로드하는 이미지가 다른 크기이기 때문에 불행합니다. 그러나 Rect를 지정하지 않으면 응용 프로그램을 실행할 때 이미지가 나타나지 않습니다. 이미지를 충분히 크게 만들면 (예와 같이) 이미지가 나타나고 내 컨트롤에 맞게 크기가 조정되지만 다각형 좌표계가 일치하지 않는 것 같습니다.

또한 StringFormat을 사용하여 Geometry 사양 앞에 M을 붙이면 "M50501250303030100100100"과 같이 나타납니다. 명시 적으로 지정하면 다각형이 나타나지만 같은 문자열로 바인딩하면 다각형이 나타나지 않습니다.

두 가지 문제가 서로 관련되어 있는지 확실하지 않습니다. 두 가지 문제 중 하나가 수정되면 다시 평가해야합니다. 제공해야 할 모든 지침을 주셔서 감사합니다!

+0

내 영어를 제한적으로 테스트했음을 인정해야합니다. o) 현재 얻고있는 것을 볼 수있는 이미지를 첨부 할 수 있습니까? – NestorArturo

답변

2

바인딩의 대상 유형이 문자열이 아니기 때문에 StringFormat 바인딩의 대상 유형은 여기에서 무시되지만 Geometry입니다.

Coordinates 속성에 의해 반환 된 문자열은 기하학에 [TypeConverterAttribute(typeof(GeometryConverter))] 특성 설정이 있지만 StringFormat이 적용되지 않으므로 암시 적으로 기하학으로 변환됩니다. 바인딩 Converter을 추가해야합니다.

ImageDrawing.Rect에 관한 다른 문제 : ImageDrawing을 이해하는 한 항상 드로잉 사각형을 지정해야하며 기본값은 Rect.Empty입니다. 어쩌면 Rect 속성을 데이터 개체의 일부 속성에 바인딩 할 수도 있습니다.

어쨌든, 이미지와 폴리곤에 대한 공통 좌표계를 유지하기 위해 이와 같이 정의하는 것이 훨씬 간단하지 않습니까?

<Viewbox MaxWidth="190" MinHeight="70"> 
    <Canvas> 
     <Image Stretch="None" Source="{Binding ImageData}" /> 
     <Path Stroke="OrangeRed" StrokeThickness="4" StrokeLineJoin="Bevel" 
       Data="{Binding Coordinates}" /> 
    </Canvas> 
</Viewbox> 
+0

오! 그걸 아는 것은 환상적입니다. 고마워요! 변환기를 사용해 보겠습니다 ... – Jarvis

+0

[GeometryConverter] (http://msdn.microsoft.com/en-us/library/system)를 사용하여 IValueConverter를 좌표 문자열에서 직접 Geometry로 변환해야합니다. windows.media.geometryconverter.aspx) 클래스. – Clemens

+0

시도 중 하지만 하나의 하위 만 지원하므로 이미지 및 경로를 태그 안에 넣을 수 없습니다. – Jarvis

관련 문제