통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
WPF & Silverlight 포럼마을입니다.
  마을등급 WPF & Silverlight   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 서학수 주민 728 since 2008-07-17
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
[마을 게시판]
WPF 강좌
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 WPF 강좌
 10줄로 구현하는 그림 낙서장 2008-07-26 오전 6:54:16
 kdw234  kdw234님께 메시지 보내기kdw234님을 내 주소록에 추가합니다.kdw234님의 개인게시판 가기 번호: 37429  / 읽음:11,140

안녕하세요. 이번 시간에는 지난 시간에 살펴보았었던 XAML Import와 Export와 관련된 내용이 약간 부족한 듯싶어서 활용 예제로 저장 및 불러오기 기능을 갖춘 간단한 그림 낙서장에 대한 구현 해보도록 하겠습니다.

그림을 보시면 아시겠지만 Clear, Save, Load라는 아주 간단한 구조로 되어있습니다. 자 이제 그럼 10줄 정도의 코딩만으로 위와 같은 기능을 하는 간단한 그림 메모장을 구현해보도록 하겠습니다. 먼저 기본적인 Application Layout을 구성하도록 하겠습니다. 그림을 그리는 부분에는 InkCanvas를 사용했으며 레이아웃 구성을 위해 StackPanel과 DockPanel을 사용했습니다.

<DockPanel LastChildFill="True">

<StackPanel Orientation="Horizontal" Height="30" DockPanel.Dock="Bottom" HorizontalAlignment="Right">

<Button Width="100" Content="Clear Ink" x:Name="BtnClear" Click="BtnClear_Click"/>

<Button Width="100" Content="Save Ink" x:Name="BtnSave" Click="BtnSave_Click"/>

<Button Width="100" Content="Load Ink" x:Name="BtnLoad" Click="BtnLoad_Click"/>

</StackPanel>

<InkCanvas x:Name="Canvas" />

</DockPanel>

DockPanel을 사용하여 InkCanvas와 Button을 포함하는 StackPanel을 배치 시켰고, StackPanel의 Orientation Property를 Horizontal로 설정하여 버튼들이 가로로 배치되도록 했습니다. 그리고 각각의 버튼의 Click Event를 생성해 주었습니다. 계속해서 각 버튼의 Event에 대한 내용의 코드를 살펴보겠습니다.

private void BtnSave_Click(object sender, RoutedEventArgs e)

{

File.WriteAllText("Ink.xaml", XamlWriter.Save(Canvas.Strokes));

}

private void BtnLoad_Click(object sender, RoutedEventArgs e)

{

Canvas.Strokes = (StrokeCollection)XamlReader.Load(File.OpenRead("Ink.xaml"));

}

private void BtnClear_Click(object sender, RoutedEventArgs e)

{

Canvas.Strokes.Clear();

}

함수 정의 부분을 빼곤 전부 한 줄 짜리 매우 간단한 코드입니다. 먼저 Save 버튼의 이벤트를 살펴보면, XamlWriter를 사용해 InkCanvas에 저장된 Stroke들을 문자열로 변환하고, System.IO Namespace에서 제공하는 File Class의 WriteAllText를 사용하여 StrokeCollection을 간단하게 Ink.xaml이란 파일에 기록했습니다. 그리고 Load 버튼의 이벤트는 File Class의 OpenRead메서드를 사용하여 File의 Stream을 가져오고 XamlReader를 사용해 StrokeCollection을 불러왔습니다. Clear 버튼을 눌렀을때에는 Strokes의 모든 내용을 지웠습니다.

비록 짧은 코드이고, 예외처리 하나도 없는 엉성한 코드이지만, 이 예제를 통하여 XAML Import 및 Export와 관련하여 쉽게 이해 하셨으면 하는 마음으로 준비해 봤습니다. 이와 관련된 질문은 메일이나 댓글 달아주세요~

사용자 삽입 이미지

코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.