본문 바로가기

WPF27

[WPF] Zoom In/Out & Rotate (줌인/줌아웃 & 회전) 이미지, 혹은 엘리먼트를 확대/축소, 회전 시키는 것은 Transform을 통해 쉽게 구현할 수 있다. WPF에는 여러 개의 Transform 들을 제공하는데, 확대/축소의 경우 ScaleTransform, 회전의 경우 RotateTransform 을 사용하여 구현한다. 간단하게, 이미지를 확대 축소, 회전 시키는 프로젝트를 만들어보자. 1. 확대 축소 시 전체 이미지를 볼 수 있도록 ScrollViewer 를 하나 만들고,2. 이미지를 하나 삽입한다.3. 확대, 축소, 회전을 위해 버튼을 3개 만들어보자 자 그럼 준비는 됐으니 Transform을 적용해보자.우리가 Transform을 적용하고자 하는 엘리먼트는 이므로, 하위에 LayoutTransform 에TransformGroup 을 하나 만들고, 그.. 2012. 8. 21.
[WPF] Custom ContentControl (컨텐트컨트롤 커스텀화) WPF 의 컨트롤들 중 ContentControl 이라는 것이 있다. Control 중에 'Content' 속성을 지닌 컨트롤을 의미한다. Button 이나 Label, Frame과 같은 컨트롤들이 'ContentControl' 에 속한다. 상황에 따라 이 ContentControl 을 커스텀화 해서 사용하고 싶은 경우가 있다. 가령 Panel 처럼 생겼지만 우측 상단에 접었다 폈다 할 수 있는 기능을 가지는 버튼을 일괄적으로 넣고 싶다거나, border, label 등으로 일괄적으로 변경을 하려고 하는 등의 경우이다. 물론 코드상에서 적용하고자 하는 부분에 모두 border, button, label 등을 추가할 수 있지만, 이를 템플릿화하여 ContentControl 로 만들어놓는다면 재사용성을 높일.. 2012. 8. 7.
[WPF] Textbox Watermark - Passwordbox ( 패스워드박스에 힌트 넣기) TextBox 에 워터마크를 삽입하는 것은 이 전의 글에서 이야기했었고, 동일한 방법으로 스타일을 만들어 Key와 TargetType 만 변경하여 PasswordBox에 적용하려 했으나 에러가 발생했다. 이유는 PasswordBox 에는 'Text' 속성이 없고 이 대신 'Password' 속성이 있지만 이 속성은 의존속성(Dependency Property) 가 아니기 때문에 트리거로 사용할 수 없다. 다시 TextBox의 예로 돌아와서 Trigger 부분을 살펴보자. 4번째 줄에 보면 'Text' 속성이 "" 일 때에 대한 조건이 있는데 해당 TextBox가 focus 되지 않고, 또한 내용이 입력되지 않았을 때 워터마크를 보여주도록 지정한다. 하지만 PasswordBox 에서는 이 'Text' 속성.. 2012. 8. 1.
[WPF] Textbox Watermark(hint) ( 텍스트박스에 힌트 넣기) 입력창, 특히 로그인 창에 회색으로 'ID를 입력하세요' 내지 'example@example.com ' 처럼 예시를 통해사용자의 입력을 돕는 기능을 흔히 볼 수 있다. 아래는 네이버 로그인 창인데, '아이디' , '비밀번호' 부분을 보면 focus 가 되면 글씨가 사라지고 입력이 없고 focus되지 않으면 나타나 입력을 돕는다. 웹에서는 태그에서 'placeholder' 속성으로 구현을 하는데, WPF 의 Textbox 에는 이 기능이 없기 때문에 직접 구현해야 한다. 1. Resource 를 통해 watermark 를 구현2. 사용하고자 하는 TextBox에 1에서 정의한 Style 을 적용 1.TextBox 에 스타일을 변경하여 watermark 를 삽입할 'Label' 하나를 추가하는 방법으로 구현.. 2012. 7. 31.
[WPF] ScrollViewer Tips (스크롤뷰어 Tips) - 1. IsDeferredScrollingEnabled - IsDeferredScrollingEnabled 속성 : ScrollChanged 이벤트가 scroll이 안정화 되었을 때(즉 ScrollViewer가 정지했을 때) 만 발생하도록 한다. 이 속성의 기본값은 'False' 로 되어 있고, 이를 'True'로 변경하면 위와 같이 동작하게 된다. 프로젝트 중에 ScrollViewer 내부에 수많은 이미지를 보여주도록 하는 경우가 있었는데, 메모리 상의 문제로 화면에 보여지는 영역의 이미지를 로드하고, ScrollChanged 이벤트가 발생할 경우 화면에 보여지는 영역을 다시 계산해서 해당 영역의 이미지를 로드하도록 구현하였다. 이렇게 했더니 스크롤을 이동할 때마다 ScrollChanged 이벤트가 많이 발생해서 퍼포먼스 상의 문제가 있어, IsDeferr.. 2012. 7. 31.
[WPF] Adorner Adorner 는 UIElement 위에 정보, 혹은 기능을 표시하기 위해 사용하는 사용자 지정 FrameworkElement 이다. 일반적인 용도는- UIElement 에서 사용자가 크기 조정, 회전, 위치 변경과 같은 기능 핸들 추가- 다양한 상태를 나타내거나 이벤트에 응답하기 위한 시각적 피드백 제공- 그 외의 다양한 시각적 효과 overlay등이 되겠다. Adorner 는 UIElement 내에 AdornerLayer 라는 레이어를 생성하여 그 위에 Adorner 객체를 위치시키므로 해당 UIElement 내부의 어떤 객체들보다 상위에 나타난다. 따라서 항상 위에 나타나야 하는 객체들 - 상태 정보, 기능 핸들 등은 Adorner 를 사용하는 것이 Z-index 등을 조절하는 것보다 편한 방법이 .. 2012. 7. 31.
반응형