Image.Source Property

이미지의 소스를 가져오거나 설정합니다.

구문


public ImageSource Source { get; set; }


<Image Source="uri"/>

XAML Values

uri

이미지 소스 파일의 URI 위치입니다. XAML 구문에서는 기본 URI에 대해 상대적인 URI로 표시할 상대 URI를 지정할 수 있습니다. 기본 URI는 이 URI를 로드하는 XAML 파일의 위치를 기준으로 해석되며 암시적으로 ms-appx: 체계를 사용합니다. 자세한 내용은 설명 부분을 참조하십시오.

속성 값

형식: ImageSource

그려진 이미지의 이미지 원본 파일을 나타내는 개체입니다. 일반적으로 이는 유효한 이미지 소스 파일에 대한 경로를 설명하는 URI(Uniform Resource Identifier)를 사용하여 생성되거나 저장소 파일의 스트림으로 채워진 BitmapImage 개체로 설정할 수 있습니다.

설명

Source 속성 설정은 기본적으로 비동기 작업입니다. 속성이므로 대기 가능 구문을 제공하지 않지만 대부분의 시나리오에서 이미지 소스 파일 로딩 시 비동기적인 상호 작용을 필요로 하지 않습니다. 프레임워크는 이미지 소스가 반환될 때까지 기다렸다가 이미지 소스 파일을 사용할 수 있게 되면 레이아웃을 다시 실행합니다.

소스를 유효 이미지 소스 파일로 확인할 수 없는 URL 값으로 설정해도 예외가 throw되지 않습니다. 대신, ImageFailed 이벤트를 발생시킵니다. 디코딩 오류도 ImageFailed를 발생시킵니다. ImageFailed 처리기를 작성하고 이 처리기를 Image 개체에 연결하여 이를 검색하고 이벤트 데이터의 ErrorMessage를 사용하여 실패 특성을 확인할 수 있습니다. 또한 이미지 소스 파일이 올바르게 로드되었는지 확인하려는 경우 Image 요소에서 ImageOpened 이벤트를 처리할 수 있습니다.

XAML에서 소스 설정

Source 속성을 XAML에서 특성으로 설정하는 경우 URI를 사용하여 Source 속성을 설정하는 것입니다. 이 동작은 문자열을 URI로 처리하는 내부 형식 변환을 기반으로 하며 BitmapImage(Uri) 생성자와 동등한 항목을 호출합니다. XAML 파서는 구문 분석 중인 XAML 페이지의 기본 URI를 사용하여 상대 URI를 나타내는 문자열을 해석합니다. 예를 들어, XAML에서 "Images/myimage.png" 값을 지정하면 해당 문자열은 앱 패키지 내에서 XAML 페이지 자체가 존재하는 기본 URI 위치에 추가되는 상대적 경로 접미사로 해석됩니다.


<Image Width="200" Source="Images/myimage.png" />

코드에서 소스 설정

코드를 사용하여 Image 개체를 만드는 경우 코드에서 Image.SourceBitmapImage 또는 BitmapSource(URI가 아님)가 필요합니다. 소스가 앱의 콘텐츠인 경우 URI를 사용하는 BitmapImage 생성자를 사용합니다. Windows 런타임은 URI를 절대 URI로 적용하므로 Windows 런타임 코드에 상대 URI를 사용할 수 없습니다.

URI를 생성하는 방법은 앱 안에 이미지 소스 파일을 패키지하는 방법 및 위치에 따라 달라집니다. 차례로 절대 기준 및 상대 부분/경로에서 URI를 만드는 서명 중 하나를 사용하여 Uri를 생성할 수 있습니다. C# 또는 Microsoft Visual Basic에서 URI 형식은 System.Uri로 표현되므로, 두 번째 매개 변수로 문자열을 사용하는 System.Uri 생성자를 사용합니다. Visual C++ 구성 요소 확장(C++/CX)의 경우 Uri(String,String)를 사용합니다. 첫 번째 매개 변수에 대해 소스를 설정할 Image 인스턴스에서 BaseUri를 호출하십시오. ms-appx: 체계의 URI를 만들고 XAML 페이지 위치의 일부 경로를 추가합니다. 예를 들면 다음과 같습니다. CapturedPhoto.Source = new BitmapImage(new Uri(this.BaseUri, "Assets/placeholder-sdk.png"));

http: 또는 https: 체계를 사용하는 경우 해당 체계를 포함하여 URI의 전체 문자열을 지정하여 문자열을 사용하는 Uri 생성자를 사용합니다. .NET Framework System.Uri 값을 사용하고 UriKind 값에 필요한 서명을 사용할 경우 Absolute를 지정해야 합니다.

다음은 C#에서 Image.Source를 설정하는 예제입니다. 이 예제에서 Image 개체는 XAML로 생성되었지만 소스 또는 다른 속성 값을 포함하지 않으며, 대신 이러한 값은 Image가 XAML에서 로드될 때 런타임에 제공됩니다.


void Image_Loaded(object sender, RoutedEventArgs e)
{
    Image img = sender as Image; 
    BitmapImage bitmapImage = new BitmapImage();
    img.Width = bitmapImage.DecodePixelWidth = 80; //natural px width of image source
    // don't need to set Height, system maintains aspect ratio, and calculates the other
    // dimension, so long as one dimension measurement is provided
    bitmapImage.UriSource = new Uri(img.BaseUri,"Images/myimage.png");
}

다른 옵션은 ms-appdata: 체계를 통해 앱의 로컬 저장소에 배치된 이미지 소스 파일을 사용하는 것입니다.

런타임에만 사용 가능한 이미지 소스(예: FileOpenPicker를 UI에 표시하여 사용자가 선택할 수 있도록 한 이미지 파일)을 사용하여 Image를 설정하는 경우 SetSourceAsync를 사용합니다.


FileOpenPicker open = new FileOpenPicker(); 
// Open a stream for the selected file 
StorageFile file = await open.PickSingleFileAsync(); 
// Ensure a file was selected 
if (file != null) 
{ 
    using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read)) 
    { 
        // Set the image source to the selected bitmap 
         BitmapImage bitmapImage = new BitmapImage(); 
         bitmapImage.DecodePixelWidth = 600; //match the target Image.Width, not shown
         await bitmapImage.SetSourceAsync(fileStream); 
         Scenario2Image.Source = bitmapImage; 
    } 
}

이미지 소스 검색 또는 디코드 시 타이밍 문제가 있고 이미지 소스를 사용할 수 있을 때까지 표시할 대체 콘텐츠가 필요할 수 있는 경우에도 ImageOpened 이벤트를 처리할 수 있습니다. 예제 코드는 XAML 이미지 샘플을 참조하십시오.

이미지 소스 및 배율

앱에 패키지된 이미지를 참조하는 경우 몇 가지 권장 크기로 이미지 소스를 만들어 앱이 Windows 8에서 확장될 때 적절하게 보이도록 해야 합니다. Image에 대한 Source를 URI로 지정할 때 런타임에 시스템에서 검색된 현재 배율에 대한 올바른 이미지 리소스를 자동으로 참조할 명명 규칙을 사용할 수 있습니다. 명명 규칙 및 자세한 내용은 빠른 시작: 파일 또는 이미지 리소스 사용을 참조하십시오.

픽셀 밀도 조정 디자인 방법에 대한 자세한 내용은 픽셀 밀도 조정 지침 또는 Image의 설명 부분을 참조하십시오.

이미지 소스 및 리소스 한정자

자동 처리를 사용하여 현재 배율과 문화권 한정자로 정규화되지 않은 리소스에 액세스하거나, 문화권 및 배율 한정자와 함께 ResourceManagerResourceMap을 사용하여 직접 리소스를 가져올 수 있습니다. 자세한 내용은 리소스 관리 시스템 또는 Image의 설명을 참조하십시오. 앱 리소스 및 앱에 이미지 소스를 패키징하는 방법에 대한 자세한 내용은 앱 리소스 정의를 참조하십시오.

사진 라이브러리에서 이미지 표시

일부 앱에서는 그림 라이브러리 콘텐츠의 일부 또는 전부를 사용자에게 표시하는 UI를 정의할 수 있습니다. UI에 실제 이미지를 표시하기 위해 Image 요소를 사용할 수 있습니다. 그림 라이브러리의 콘텐츠는 StorageFolderQueryResult 또는 StorageFolder.GetFilesAsync 호출의 반환 값으로 사용할 수 있습니다. 개별 이미지를 표시하려면 라이브러리 열거의 StorageFile 개체를 사용하고 OpenAsync를 호출하여 스트림을 가져옵니다. 새로운 BitmapSource를 만들고 스트림으로 SetSourceAsync를 호출하여 이 스트림을 통해 이미지 소스를 설정합니다. 프로그래밍 방식으로 사진 라이브러리에 액세스할 기능을 지정해야 합니다.

요구 사항

지원되는 최소 클라이언트

Windows 8

지원되는 최소 서버

Windows Server 2012

Namespace

Windows.UI.Xaml.Controls
Windows::UI::Xaml::Controls [C++]

Metadata

Windows.winmd

참고 항목

Image
ImageFailed
빠른 시작: Image와 ImageBrush

 

 

표시:
© 2015 Microsoft