WPF27 [WPF] Drawing Grid Lines on Canvas (캔버스에 격자 눈금선 그리기) Canvas 의 사용 용도에 따라 눈금선이 필요한 경우가 있다. (Grid, Panel 등도 방법은 동일하다)주로 그림판이나 이미지 관련 기능을 구현할 때 필요로 할텐데, 이를 구현해보자. 파워포인트의 눈금선 기능을 참고하자. 방법은 격자 무늬의 VisualBrush (혹은 DrawingBrush) 를 생성하고, 이를 컨트롤의 Background 로 지정하는 것이다. 상하, 좌우 각각 50pixel 간격의 격자를 생성하는 코드는 다음과 같다. 물론 위의 Brush 를 Resource 에 선언하고, Key 값을 통해 필요한 부분에서 사용하거나, xaml 측이 아닌 c# 측에서 선언하여 사용하는 방법도 가능하다. 위의 코드의 출력물은 다음과 같다. 2013. 7. 29. [WPF] Deal with Image Quality problem (이미지 품질 문제 해결 -문서, 그래프 등 이미지 품질 문제) WPF에서 이미지를 로드했을 때, 이미지의 품질이 떨어져 보이는 경우가 있다. 문서나 그래프가 포함된 이미지를 로드하면 확연히 그 차이가 보이는데, 그 이유는 품질 상의 이유로 렌더링 시 이미지의 품질을 낮추기 때문이다. 이는 'RenderOptions.BitmapScalingMode' 라는 의존속성을 변경하여 해결할 수 있다.해당 속성은 기본으로 'Unspecified' 로 지정되어 있으며, 이는 품질이 떨어지는 대신 처리 속도가 빠르다.이미지의 품질을 높이기 위해서는 BitmapScalingMode 라는 속성을 'HighQuality' 로 변경하면 되는데, xaml 에서 변경할 수도 있고, cs 측에서 다음의 함수를 호출하여 변경할 수도 있다. RenderOptions.SetBitmapScalingM.. 2013. 5. 13. [WPF] Save Canvas as a Image (Canvas를 이미지로 저장하기) 화면을 통채로 캡쳐하고 싶은 경우가 있다.이 때는 RenderTargetBitmap 객체를 사용하여 화면을 Bitmap으로 만들고 이를 저장하는 방법을 이용한다. Canvas 객체를 파일로 저장하는 코드는 다음과 같다. RenderTargetBitmap renderBitmap = new RenderTargetBitmap( (int)myCanvas.ActualWidth, (int)myCanvas.ActualHeight, 96d, 96d, PixelFormats.Default); renderBitmap.Render(myCanvas); using (Stream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None).. 2013. 1. 7. [WPF] Create Custom Control (커스텀 컨트롤 만들기) - 행열 선택기(RowColumn Selector) [5] 이 포스팅에서는 1. 선택된 행, 열 버튼에 표시하기2. 행, 열 선택 시 라우팅 이벤트 발생 의 과정을 진행하겠다. ----------------------------------------------1. 선택된 행, 열 버튼에 표시하기 다시 Generic.xaml 로 돌아가자.1. ToggleButton 내부에 적당히 행, 열을 표시하도록 TextBlock 들을 만든다.2. 각각의 TextBlock 의 Text 를 'Row', 'Column' 의존속성과 바인딩 시킨다. - 이 때, Row, Column 은 int 형 의존속성으로, 바로 바인딩 시킬 수 없다. 따라서 컨버터(Converter)를 사용한다. - 컨버터의 사용은 이전의 포스팅([WPF] Binding (바인딩) - Converter (컨버터.. 2012. 12. 11. [WPF] Create Custom Control (커스텀 컨트롤 만들기) - 행열 선택기(RowColumn Selector) [4] 이번 포스팅에서는 1. 선택된 행, 열의 갯수를 지정하는 의존속성(Dependency Property) 생성2. 작은 사각형(CustomRectangle) 에 마우스 이벤트 구현 을 진행하도록 하겠다. ---------------------------------------------------1. 선택된 행, 열의 갯수를 지정하는 의존속성(Dependency Property) 생성 의존속성은 이전 포스팅에서도 다루었지만 쉽게 생성하여 일반 전역변수처럼 사용할 수 있다. 다음과 같이 행(Row), 열(Column) 에 해당하는 의존속성을 생성하도록 한다. 여기에 덧붙여, 앞의 과정에서 사각형들을 생성할 때 사용했던 변수들(MaxRows, MaxColumns, RectangleSize, ...) 등도 의존속.. 2012. 12. 11. [WPF] Create Custom Control (커스텀 컨트롤 만들기) - 행열 선택기(RowColumn Selector) [3] 이번 포스팅에서는 1. 팝업창 내부의 구조를 구현하고2. 작은 사각형들을 동적으로 생성한다. ----------------------------------------------------------1. 팝업창 내부의 구조 이제 팝업창 내부에 행, 열을 선택하는 화면을 구현해보자. 팝업창 상단에는 현재 선택된 행, 열의 갯수가 보여지도록 TextBlock 을 넣고하단에는 사각형들을 배치할 'UniformGrid'를 하나 넣어준다. 여기까지 넣으면 간단한 구조는 다음과 같다 ----------------------------------------------------------2. 작은 사각형들 생성 작은 사각형들을 생성하여 위에서 생성한 UniformGrid에 차곡차곡 넣어주어야 한다. 간단한 과정은 다음.. 2012. 12. 11. 이전 1 2 3 4 5 다음 반응형