본문 바로가기

Dev29

[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.
[WPF] Clipboard (클립보드) WPF로 Clipboard 를 사용하여 복사/붙여넣기를 하는 것은 생각보다 매우 간단하다. System.Windows.Clipboard 클래스 를 사용한다. 1) 복사하기 :Clipboard.SetText (string text) , Clipboard.SetImage (BitmapSource image) 함수 사용( 이외에도 SetAudio, SetData, SetDataObject 함수도 존재함) BitmapImage img = new BitmapImage();Clipboard.SetImage(img); 2) 붙여넣기 :Clipboard.GetText(), Clipboard.GetImage(), Clipboard.GetData(), Clipboard.GetDataObject() 등의 함수 사용 Bitm.. 2012. 7. 30.
[WPF] Image Loading (이미지 불러오기) 이미지를 불러올 경우가장 간단한 코드는 다음과 같다. 1)BitmapImage img = new BitmapImage(new Uri(myUri));Image.Source = img; 검색하다보니 이 코드를 포함해서 여러 개의 코드 조각들 간의이미지 로딩 속도를 비교한 결과가 있는 블로그가 있었다.(http://lovehana.com/flyingmt/566?category=8) 위의 블로그에서 가장 속도가 좋다고 나온 코드 조각은 다음과 같다. 2)BitmapImage img = new BitmapImage();img.BeginInit();img.CacheOption = BitmapCacheOption.OnDemand;img.CreateOptions = BitmapCreateOptions.DelayCrea.. 2012. 7. 30.
[WPF] Animated ScrollViewer (스크롤뷰어 애니메이션 적용) 스크롤뷰어를 원하는 지점으로 스크롤시키고자 할 때는ScrollViewer.ScrollToHorizontalOffset(), ScrollToVerticalOffset() 함수를 사용한다. 원하는 지점까지 스르륵 애니메이션을 적용해서 스크롤시키고 싶은데위의 함수는 그런 기능을 지원하지 않고,그렇다면 DoubleAnimation 등의 애니메이션을 사용해야 하는데, ScrollViewer.HorizontalOffset, ScrollViewer.VerticalOffset 2개의 의존속성은 get 만 지원해서 DoubleAnimation 을 적용할 수 없다.따라서 스크롤뷰어에서 스크롤 기능에 애니메이션을 적용하려면 스크롤뷰어를 상속받아 별도의 스크롤뷰어를 만드는 방법밖에 없다. 별도의 스크롤뷰어를 만들어 Horiz.. 2012. 7. 26.
[WPF] Add WPF item entries in VS2010 (VS2010에서 WPF Item 추가하기) Visual Studio 2010을 사용하는 중에, 특정 프로젝트에서 Custom Control(WPF) 를 추가하려고 했으나 리스트에 해당 item 이 나타나지 않았다. 다른 프로젝트에서 아이템을 추가(프로젝트 > 우클릭 - 추가 > 새로운 아이템 > Visual C# items > WPF ) 하면 Window, Page, User Control, Resource Dictionary 등의 8개의 메뉴가 나오는데 해당 프로젝트에서는 아래처럼 User Control 하나만 나왔다. 이유가 혹시 참조를 안했나 해서 확인도 다 해보고, 프로젝트 속성도 검토해보았으나 이유를 찾지 못했는데, 그 해결책은 매우 간단하다. 해당 프로젝트 파일(*.csproj 파일) 을 메모장으로 열어 첫번째 밑에 다음의 코드를 삽입.. 2012. 7. 26.
반응형