2011-01-21 4 views
1

Canvas 컨트롤의 자식으로 Image 컨트롤이 있습니다. 비트 맵으로 Image 컨트롤을로드하고 Stretch 속성을 Uniform으로 설정하면 중심 이미지가 생깁니다. 그러나 이미지의 위치를 ​​설정하거나 검색 할 방법이 없습니다. 누구에게나 해결책이 있습니까? 여기 Silverlight 캔버스 컨트롤에서 이미지의 위치를 ​​얻거나 설정하는 방법

쉽게 문제를 조금 이해하게하는 몇 가지 코드입니다 :

Image img = new Image(); 
img.Height = maxSize.Height; 
img.Width = maxSize.Width; 
img.Stretch = Stretch.Uniform; 
img.Source = bmp; 
myCanvas.Children.Add(img); 

// returns 0: 
MessageBox.Show(((Image)myCanvas.Children[0]).GetValue(Canvas.LeftProperty).ToString()); 
MessageBox.Show(((Image)myCanvas.Children[0]).GetValue(Canvas.TopProperty).ToString()); 

// in order to set explicitly set the values I have to know what they are? 
Double left = {the current left value}; 
Double top = {the current top value}; 
((Image)myCanvas.Children[0]).SetValue(Canvas.LeftProperty, left); 
((Image)myCanvas.Children[0]).SetValue(Canvas.TopProperty, top);` 

내가 코드를 선택하고 {} 버튼을 누르면,하지만 나를 위해 작동하지 않습니다, 둘 다 코드를 입력 않습니다 수동 틱.

+0

를 사용합니다. 왼쪽/맨 위 값을 읽은 다음 변경하지 않고 다시 쓰고 있습니다. 당신은 또한 그들이 왜 0인지 혼란 스럽습니다. 내가 추측 할 수있는 가장 좋은 점은 당신이 이미지 * 컨트롤 *의 위치를 ​​이미지 컨트롤의 내부 *의 명백한 위치와 혼동하고 있다는 것입니다. 컨트롤 안의 * picture *의 왼쪽/위쪽 위치는 (ImageControlDimension - ScaledPictureSize)/2에 의해 결정됩니다. 왼쪽/위쪽 속성을 사용하여 수행 할 작업을 설명하는 경우 해당 속성을 가져 오는 방법을 알려줄 수 있습니다 정말 필요한. – David

+0

이미지 컨트롤 안에있는 내 그림의 실제 위치를 알아야합니다. Google을 통해 ImageControlDimension 및 ScaledPictureSize에 대한 참조를 찾을 수 없습니다. 내가 능숙하게하려고하는 것은 단지 이미지의 일부분 위에 직사각형을 그리고 그 이미지의 일부분을 추출하는 것입니다. 이미지 (또는 이미지 컨트롤의 그림)가 맨 위에 0,0 인 경우이 작업을 매우 쉽게 수행 할 수 있지만, 그렇지 않은 경우에는 내가 무엇인지 알 필요가 있습니다. 나는 이것을 발견하는 것이 그렇게 어렵다고 믿을 수 없다. – descf

+0

4 년 된 질문에 부딪히지 않아서 죄송합니다. 그러나이 문제에 대한 해결책을 찾으셨습니까? 나는 거의 똑같은 문제에 직면하고있어 아무것도 찾을 수 없다. – Ali250

답변

3

그것은 * * 당신이 달성하려고하는 것을 완전히 명확하지 년대 Canvas.LeftProperty 및 Canvas.TopProperty

var left = (double)image.GetValue(Canvas.LeftProperty) 
left += 50; 
image.SetValue(Canvas.LeftProperty, left); 
+0

이것은 답이 아닙니다. 명시 적으로 먼저 설정하지 않으면 0을 반환합니다. 예를 들어, 마우스를 사용하여 사각형을 그린 다음 사각형을 그리는 데 사용 된 마우스 좌표를 사용하여 값을 명시 적으로 설정하여 값을 명시 적으로 설정하여 다른 상황에서 문제를 해결했습니다. 그러나이 경우 나는 cooridinates가 무엇인지 알지 못하므로 명시 적으로 설정할 수 없습니다. – descf

관련 문제