내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8용 Direct3D 앱에서 사진 선택기를 사용하는 방법

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1만

 

이 항목에서는 사용자가 휴대폰의 사진 라이브러리에서 사진을 선택할 수 있도록 Windows Phone Direct3D 앱 에서 사진 선택기를 표시하는 방법을 설명합니다. 사진이 앱에 StorageFile 개체로 반환됩니다.

PickSingleFileAsync() 메서드를 사용하여 사진 선택기를 시작합니다. Windows 8 에서 이 메서드를 사용하여 파일 형식을 선택할 수 있지만 Windows Phone 에서는 이미지만 선택할 수 있습니다. 이런 이유로 FileOpenPicker 개체의 몇 가지 속성을 적절하게 설정해야 하며, 그렇지 않으면 선택기가 시작되지 않습니다. 다음 표에서는 이러한 속성과 해당 속성의 필수 값을 보여 줍니다.

속성

필수 값

ViewMode

PickerViewMode::Thumbnail

SuggestedStartLocation

PickerLocationId::PicturesLibrary

FileTypeFilter

“*”

선택기 작업이 완료된 후 사용자가 앱에서 다른 위치로 이동하고 앱이 일시 중단된 경우 ResumePickSingleFileAsync()를 호출하여 사용자 선택 파일을 검색하도록 선택 작업을 계속할 수 있습니다. Windows Phone 에서 PickSingleFileAsync() 메서드에는 선택적인 ID 매개 변수가 있습니다. 앱이 여러 사진 선택기를 사용하는 경우 이 앱 정의 ID 문자열을 사용하여 앱이 일시 중단되기 전에 시작된 선택기를 식별할 수 있습니다.

사진 선택기 사용

  1. 새 Windows Phone Direct3D 앱 을 만듭니다. 이 예제에서는 프로젝트 이름을 NativePhotoPicker로 지정한다고 가정합니다.

  2. Completed 이벤트에 대한 이벤트 처리기 선언을 NativePhotoPicker.h 헤더 파일에 추가합니다. 이 이벤트는 사진 선택 작업이 완료될 때 호출됩니다. 이 작업의 결과 형식은 반환된 이미지가 포함된 StorageFile에 대한 참조입니다.

    
    	void PickSingleFileCompletedHandler(Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile^>^ operation, Windows::Foundation::AsyncStatus status);
    
    
    
  3. 현재 활성 선택기에 대한 앱 정의 ID가 포함되는 멤버 변수를 선언합니다. 앱에서 여러 선택기를 사용하는 경우 이 변수를 통해 반환되는 선택기를 결정할 수 있습니다. 앱에서 단일 선택기만 사용하는 경우 이 단계를 건너뛸 수 있습니다.

    
    	Platform::String^ m_pickerID;
    
    
    
  4. Windows.StorageWindows.Storage.Pickers 네임스페이스를 참조하도록 using 문을 NativePhotoPicker.cpp 맨 위에 추가합니다.

  5. FileOpenPicker 클래스의 새 인스턴스를 만듭니다. 이 항목의 앞부분에서 설명한 대로 FileOpenPicker의 보기 모드, 시작 위치 및 파일 형식 필터에는 필수 값을 설정해야 하며, 그렇지 않으면 선택 작업이 실패합니다.

    PickSingleFileAsync()를 호출하여 선택 작업을 시작합니다. 이 예제에서는 단일 문자열을 사용하는 이 메서드의 오버로드는 앱이 일시 중단된 다음 작업 중이 계속되는 경우 진행 중인 선택 작업을 추적하는 방법을 보여 주는 데 사용됩니다. 앱에서 단일 선택기만 사용하는 경우 이 단계를 건너뛸 수 있습니다.

    마지막으로 PickSingleFileAsync()에서 반환한 IAsyncOperation 개체의 Completed() 이벤트에 대한 이벤트 처리기를 후크합니다.

    이 예제에서는 사진 선택기를 시작하는 코드가 Direct3D 앱 프로젝트 템플릿에 포함된 OnPointerPressed 메서드에 삽입됩니다. 화면을 아무 곳이나 터치하면 이 처리기가 호출됩니다.

    
    void NativePhotoPicker::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args)
    {
        // Insert event handling here
    	FileOpenPicker^ fileOpenPicker = ref new FileOpenPicker();
    	fileOpenPicker->ViewMode = PickerViewMode::Thumbnail;
    	fileOpenPicker->SuggestedStartLocation = PickerLocationId::PicturesLibrary;
    	fileOpenPicker->FileTypeFilter->Append("*");
    
    	m_pickerID = "ID_12345";
    	IAsyncOperation<StorageFile^>^ pickSingleFileOperation = fileOpenPicker->PickSingleFileAsync(m_pickerID);
    
    	pickSingleFileOperation->Completed = ref new AsyncOperationCompletedHandler<StorageFile^>(this, &NativePhotoPicker::PickSingleFileCompletedHandler);
    }
    
    
    
  6. Completed() 이벤트 처리기 구현을 추가합니다. GetResults()를 호출하여 이미지 데이터가 포함된 StorageFile 개체를 가져옵니다. 여러 선택기를 사용하는 경우 선택기 ID가 포함된 멤버 변수를 확인하면 이 이벤트를 실행하는 선택기를 확인할 수 있습니다.

  7. 앱 활성화 및 비활성화를 처리하는 코드를 추가합니다. Windows Phone 에서 앱을 일시 중단한 후 선택기 작업 중에 다시 활성화할 수 있습니다. 앱이 일시 중단될 때 사용자가 작업을 완료하지 않은 경우 선택기는 사용자가 작업을 취소한 것처럼 자동으로 종료됩니다. 그러나 사용자가 선택기 작업을 완료했지만 Completed() 이벤트가 발생하기 전에 앱이 일시 중단되지 않으면 앱의 Activated 이벤트에 전달된 IActivatedEventArgsKind 속성 값이 ActivationKind::PickerReturned가 됩니다. 이 경우 args 개체를 IPickerReturnedActivatedEventArgs 개체로 캐스팅한 다음 선택기를 시작할 때 ID를 지정한 경우 PickerOperationId() 속성을 가져올 수 있습니다. 그런 다음 ResumePickSingleFileAsync()를 호출하여 선택 작업을 계속하고 이전에 사용한 동일한 이벤트 처리기를 후크하여 결과를 처리합니다.

앱 일시 중단 및 활성화 시 선택기 테스트

  • 앱을 개발하는 동안 앱에서 앱 일시 중단 및 활성화를 제대로 처리하는지 테스트해야 합니다. Visual Studio 의 프로젝트 메뉴에서 [Project Name] 속성을 클릭합니다. 속성 페이지 대화 상자의 구성 속성에서 디버깅을 클릭합니다. 비활성화 시 삭제 표식 값을 로 변경합니다. 이제 디버깅을 활성화하고 앱을 시작한 다음 사진 선택기를 시작하면 앱이 자동으로 일시 중단됩니다. 뒤로 버튼을 사용하여 앱으로 돌아가면 Activated 이벤트 처리기의 코드가 실행되고 선택된 이미지가 포함된 사용자 지정 이벤트 처리기를 호출합니다.

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft