2013-07-25 6 views
-1

20 개의 이미지가 있습니다. ball1, ball2, ..., ball20입니다.이미지 배열을 만드는 방법은 무엇입니까?

아마, 제가

.xaml에

Image x:Name="ball1" Source="/Images/ball1.png" Canvas.Left="150" Canvas.Top="200"을 사용하여 이미지를 삽입했다.

현재, 나는 내가 그것을 삽입 할 위치를 지정하지 않기 때문에 내가이 방법을 사용하지 수,

Uri uri = new Uri("/Images/ball1.png", UriKind.Relative); 
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri); 
image.SetValue(Image.SourceProperty, img); 
cv.Children.Add(image); 

그러나이 방법으로 삽입했습니다.

.xaml을 사용하지 않으려 고합니다. 어떻게 배열을 .cs에서 사용할 수 있습니까?

+0

여기에서 주요 문제의 요점 인 유일한 질문은 다음과 같습니다. XAML에서 UI 작업을 수행하지 않으려는 이유는 무엇입니까? 그게 무엇을위한거야 ... –

+0

질문에 대한 코드 구현 및 스택 오버플로에 속한다. –

+0

@ Patrykíwiek 안녕하세요 .xaml에서 해보고 싶습니다. 그러나 배열을 사용하여이를 수행 할 수는 없습니다. –

답변

0

XAML에서 Image 개체를 선언 한 다음 원하는 경우 코드 숨기기 또는보기 모델에서 Source 속성을 업데이트 할 수 있습니다. 당신이 INotifyPropertyChanged 인터페이스 뒤에보기 모델 또는 코드에서 다음

<Image Source="{Binding Image1SourcePath}" Canvas.Left="150" Canvas.Top="200" /> 
... 
<Image Source="{Binding Image20SourcePath}" Canvas.Left="1500" Canvas.Top="200" /> 

의 형태를 구현 확인

public string Image1SourcePath 
{ 
    get { return image1SourcePath; } 
    set { image1SourcePath = value; NotifyPropertyChanged("Image1SourcePath"); } 
} 
... 
public string Image20SourcePath 
{ 
    get { return image20SourcePath; } 
    set { image20SourcePath = value; NotifyPropertyChanged("Image20SourcePath"); } 
} 

:이 방법의 경우, 뒤에보기 모델 또는 코드에서 이미지마다 하나의 속성이 필요합니다 :

Image1SourcePath = "/YourApplicationName;component/Images/ball1.png"; 
... 
Image20SourcePath = "/YourApplicationName;component/Images/ball20.png"; 

이 많은 코드는, 그러나 당신이 뒤에 코드에서 Image.Source 속성을 업데이트하고 XAML의 위치를 ​​설정할 수 있습니다.

0

첨부 된 속성 (Canvas.Left & Canvas.Top)을 설정하는 Canvas 클래스에서 적절한 정적 메서드를 호출하여이 작업을 수행 할 수 있습니다. 당신은 표시 할 이미지의 목록이있는 경우

Uri uri = new Uri("/Images/ball1.png", UriKind.Relative); 
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri); 
image.SetValue(Image.SourceProperty, img); 
cv.Children.Add(image); 

// Position the image on the canvas 
Canvas.SetLeft(150); 
Canvas.SetTop(200); 

, 당신은 같은 일을 할 수있는 :

 List<Uri> imageUris = new List<Uri>() 
     { 
      new Uri(@"C:\Users\Grant\Pictures\Heron_zoomed.png"), 
      new Uri(@"C:\Users\Grant\Pictures\bridge.jpg") 
     }; 

     int left = 20; 
     int top = 10; 

     foreach (var uri in imageUris) 
     { 
      Image image = new Image { Source = new BitmapImage(uri) }; 
      Canvas.SetLeft(image, left); 
      Canvas.SetTop(image, top); 
      MainCanvas.Children.Add(image); 

      left += 400; 
     } 

위의 코드는 사용자가 파일 이름에 창 XAML에서 것을 다음과 같이 있다고 가정 imageUris 목록이 있습니다.

<Grid> 
    <Canvas x:Name="MainCanvas"> 

    </Canvas> 
</Grid> 

나는이 이미지로 무엇을하려고하는지 잘 모릅니다. 눈금에 표시하려는 경우 WPF 컬렉션 컨트롤 중 하나를 사용하여 코드없이이 작업을 수행 할 수 있습니다. 이 일을

한 가지 방법은 더 나은 대안이 용의자 Displaying images in grid with WPF

하지만 이것은 시작이 될 것입니다.

+0

안녕하세요, 감사합니다. 그러나 배열로 배열하는 방법을 보여줄 수 있습니까? –

+0

@LiuJiaHui 이미지 (비트 맵) 파일 이름 배열이 있습니까? – grantnz

+0

나는 그것을 가지고 있지 않다. 나는 어떻게 이미지를 배열 할 수 있는지 알고 싶다. –

관련 문제