통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · 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 강좌
 GDI Object를 WPF로 변환 하여 사용하기 2008-07-24 오후 3:10:35
 kdw234  kdw234님께 메시지 보내기kdw234님을 내 주소록에 추가합니다.kdw234님의 개인게시판 가기 번호: 37408  / 읽음:4,546

이번 시간에는 GDI나 GDI+에서 사용되는 GDI Object를 WPF의 기본 비트맵 형식인 BitmapSource객체로 변환하는 방법에 대한 내용을 다룹니다. .Net Framework 2.0이하에서 사용하던 System.Drawing.Bitmap or Icon객체를 WPF에서 사용하는 BitmapSource객체로 변환하는 것이라고도 말할 수 있는데요, 기존의 UnManaged Object와 Managed Object 간의 상호 운용 지원을 하는 System.Windows.Interop.Imaging Class를 사용합니다.

System.Windows.Interop.Imaging Class는 아래와 같은 총 3가지의 UnManaged객체를 지원하는 메서드를 제공하며 각각에 대한 설명은 다음과 같습니다.

  • CreateBitmapSourceFromHBitmap : 관리되지 않는 비트맵에 대한 제공된 포인터와 색상표 정보를 기반으로 관리되는 BitmapSource를 반환합니다.
  • CreateBitmapSourceFromHIcon : 관리되지 않는 아이콘 이미지에 대한 제공된 포인터를 기반으로 관리되는 BitmapSource를 반환합니다.
  • CreateBitmapSourceFromMemorySection : 제공된 관리되지 않는 메모리 위치를 기반으로 관리되는 BitmapSource를 반환합니다.

너무나도 쉽게 이름을 잘 풀어 써줘서 특별히 설명을 보지 않아도 함수가 뭐 하는 녀석인지 알 수가 있죠? ㅎㅎ
먼저 Bitmap Object를 BitmapSource로 변환하는 코드를 보겠습니다.

System.Drawing.Bitmap Source = System.Drawing.Bitmap.FromFile("소녀시대짱.jpg");

IntPtr HBitmap = Source.GetHbitmap();

BitmapSource Result = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(HBitmap,

IntPtr.Zero, Int32Rect.Empty,System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());

뭔가 복잡한 듯이 주절주절 써 있는데 알맹이만 빼고 보면 특별한 게 없습니다. -_-
System.Drawing.Bitmap Object를 생성하고, Bitmap Object의 Pointer(HBitmap)를 GetHbitmap메서드를 사용해서 얻습니다. 그리고 System.Windows.Interop.Imaging Class의 CreateBitmapSourceFromHBitmap메서드를 호출하여 BitmapSource를 생성하면 끝! 여기서 중요한 건, CreateBitmapSourceFromHBitmap의 Parameter인데요, 순서대로 UnManaged Bitmap Pointer, Bitmap Color Palette, Source Size, Size Option입니다.

위와 마찬 가지로 아이콘도 간단하게 BitmapSource로 변환할 수 있습니다.

System.Drawing.Icon IconFile = System.Drawing.Icon.ExtractAssociatedIcon("원더걸스.ico");

System.Drawing.Bitmap BitmapData = IconFile.ToBitmap();

IntPtr HBitmap = Source.GetHbitmap();

BitmapSource Result = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(HBitmap,

IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());

System.Drawing.Icon Class의 ExtractAssociatedIcon를 사용해 Icon Object를 생성했습니다. 그리고 ToBitmap 메서드를 사용하여 Bitmap으로 변한 한 뒤 이후 내용은 동일 합니다.

사용자 삽입 이미지

 

코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 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.