CLOSE SEARCH
POSTS IN CATEGORY: Windows & Windows Phone

RenderTransform과 OpacityMask를 이용한 이미지 반사효과

이미지 반사 효과를 구현하기 위해 그리드 상에 두개의 Image 엘리먼트를 추가한다. 그리고 반사될 이미지의 RenderTransformOrigin 값을 변경한다.

그 후 속성-엘리먼트 구문을 통해 RenderTransform 을 ScaleTransform 으로 지정한다. ScaleTransform 의 Y 스케일에 -0.7 값을 설정해서 이미지가 상하 반전되고 높이가 30% 작아지도록 한다. 그리고 아래쪽으로 갈수록 투명해지도록 OpacityMask 에 선형그레디언트를 추가한다.

OpacityMask

Image의 OpacityMask를 이용해서 이미지의 외곽선에 투명효과를 줄 수 있다. 아래의 코드는 이미즈를 원형그레디언트로 마스킹하고 마스킹된 영역의 외곽 부분을 투명하게 하는 예제이다.

Image 엘리먼트에 표시할 이미지는 Source 속성을 통해 지정한다. 그리고 속성-엘리먼트 구문을 통해 OpacityMask를 설정한다.
이미지의 중앙에서 외곽선까지의 반경 90%까지는 불투명한 이미지를 유지하고 90%부터는 서서히 투명해진다. 이를 위해 마지막 GradientStop의 색상은 투명으로 지정한다.

Style Item

Style 아이템은 Resource 컬렉션 중에서 가장 많이 사용되는 아이템으로 대상의 속성을 지정하는 용도로 사용된다. 스타일 아이템은 대상의 속성을 나타내는 하나이상의 Setter를 가지며 Setter는 속성의 이름을 지정하는 Property 속성과 Value 속성을 가진다.

아래는 텍스트블록에 사용할 스타일 아이템을 선언한 예이다.

TargetType 속성을 통해 스타일을 적용할 대상 객체의 형식을 지정하고 Setter를 통해 속성과 속성값을 지정한다.

또한 Setter의 Value 값은 속성-엘리먼트 구문을 통해서도 정의할 수 있다.

 

실제 텍스트블록에 위에서 정의한 스타일을 적용시키는 방법은 아래와 같다. k:Key에서 지정한 이름을 통해 스타일 아이템에 접근한다.

 

스타일 아이템은 BasedOn 속성을 통해 다른 스타일 아이템을 상속할 수 있다. 다음은 위에서 정의한 myTextblockStyle를 상속한 예이다.

Isolated Storage

모든 윈도우폰 7 앱들은 다른 앱들이 접근할 수 없는 자신만의 격리된 저장소(Isolated Storage)를 가진다. 격리된 저장소에 있는 데이터들은 앱이 종료되거나 톰스토닝 될 때에도 유지된다.

격리된 저장소에 접근하기 위해서는 ApplicationSettings 속성을 사용한다. 이 코드를 통해 iss는 앱의 격리된 저장소에 대한 참조를 얻게되며 이를 통해 데이터을 읽고 저장할 수 있다.

NavigationService를 통한 페이지 이동 및 데이터 공유

윈도우폰 7에서는 NavigationService를 통해 페이지 이동을 제공한다. NavigationService의 Navigate 함수에 이동하려는 xaml 파일 대한 Uri 객체를 넘겨주면 해당 페이지로 이동한다.

예를 들어, 메인페이지에서 서브페이지로 이동하는 버튼의 Click 이벤트에 onGoToSubpage가 연결되어 있다면 이 함수의 내용은 아래와 같을 것이다.

그리고 서브페이지에서 메인페이지로 돌아오는 동작을 하는 버튼의 이벤트 함수는 아래와 같을 것이다.

CameraCaptureTask를 통한 사진 찍기

-MainPage.xaml

 

-MainPage.xaml.cs

 

1. 윈도우폰 7에서 카메라 제어를 담당하는 CameraCaptureTask 객체를 생성한다.

2. Completed 이벤트 핸들러를 추가한다.

3. Show() 함수를 호출해서 카메라를 실행한다.

4. Completed 이벤트 핸들러에서 필요한 추가 작업을 수행한다. 이 핸들러는 PhotoResult 형식의 파라미터를 넘겨주며 TaskResult 속성을 통해 작업 결과를 얻을 수 있고 ChosenPhoto를 통해 촬영한 사진을 넘겨준다.

Windows Phone 7 터치 이벤트

윈도우즈 폰용 실버라이트에서는 고수준과 저수준의 두가지 멀티터치 프로그래밍 인터페이스를 제공한다.

먼저, 고수준의 인터페이스에는 UIElement 클래스의 ManipulationStarted, ManipulationDelta, ManipulationCompleted 이벤트가 있고, 저수준의 인터페이스에는 Touch.FrameReported 정적 이벤트가 있다.

 

– ManipulationStarted, ManipulationDelta, ManipulationCompleted 이벤트를 통한 고수준의 터치 이벤트 설정

 

화면 회전과 상태표시줄 표시 설정

– 화면 회전 설정

MainPage.xaml 파일 내에 있는 SupportedOrientations 값을 아래의 값 중 하나로 설정한다.

  • Portrait : 세로 방향만 지원
  • Landscape : 가로 방향만 지원
  • PortraitOrLandscape : 가로, 세로 모두 지원
가로와 세로 방향을 모두 지원하는 경우 PhoneApplicationPage 클래스에서 제공하는 OnOrientationChanged 메소드를 오버라이드해서 해당 이벤트를 처리해주어야 한다.

– 상태표시줄 표시 설정

shell:SystemTray.IsVisible 값을 True 혹은 False로 설정한다.

Brush 객체

실버라이트에서 제공하는 브러시의 종류는 다음과 같다.

  • SolidColorBrush
  • LinearGradientBrush
  • RadialGradientBrush
  • ImageBrush
  • VideoBrush
– SolidColorBrush
– LinearGradientBrush