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

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 [질문] 그림파일 Antialiasing  | Graphic 2009-08-17 오후 2:27:25
변창희 (heephyros)  변창희님께 메시지 보내기변창희님을 내 주소록에 추가합니다.변창희님의 개인게시판 가기 번호: 794842 추천:0  / 읽음:256

안녕하세요^^

 

다름이 아니고..

 

cxImage 를 이용해서 PNG 그림 파일 하나를 읽어 왔습니다.

 

처음에 이미지가 그냥 사각형 이라서 몰랐는데

 

모서리를 동그랗게 타원으로 만들고 다시 부르니..

 

타원으로 그려져야 할 부분이 층계처럼 층이 지네요.

 

포토샵에서 불러서 보면 주위 배경과 잘 스며들도록 투명도가 픽셀단위로 서서히 바뀌어 있는걸 볼 수 있는데

 

MFC 에서 불러서 보면 그 투명도 대로 보이지 않고 그냥 다 하얀 색이라서 층이 지는 거 같아요.

 

이렇게 층이 지는 현상을 없애는게 Antialiasing 이라더군요..

 

안티앨리어싱에 대해서 찾아보니 C++ 에서는 폰트에 관한 안티앨리어싱은 있는데

 

그림 파일에 대해서는 없는 거 같더라구요..

 

C# 은 그런 기능이 따로 있는 거 같던데..

 

 

mfc 에서도 구현해 보려고 자료를 많이 찾아봤는데

 

픽셀단위로 투명화를 시키는 방법이 있긴 했는데, 해보니까 안티앨리어싱이 되지도 않고

 

픽셀을 일일히 찾아서 RGB 값을 다시 주려고 OnPaint() 에서 중첩된 for 루프를 돌리니 속도가 현저히 떨어졌습니다..-_-;;

 

C++, 특히 MFC 에서 어떻게 그림파일의 안티앨리어싱을 구현할 수 있을까요?

 

샘플이 있다면 최고 이겠고..

 

여러분의 넓은 지식과 반짝이는 아이디어로 도와 주시면 정말 감사하겠습니다.

 

그럼 부탁드립니다^^

 

 

 

 

 

 

이 글에 답변 등록하기
 [답변]ㅠㅠ 2009-08-17 오후 2:40:44
김원표 (kwp118)  김원표님께 메시지 보내기김원표님을 내 주소록에 추가합니다.김원표님의 개인게시판 가기 번호: 794848 추천:0  

cxImage로 png를 불러와서 그것으로 바로 그리는것이 아닌가요? ;ㅅ;

 

제가 cxImage를 안해봐서ㅠㅠ

 

그러나 png를 불러와서 배경 투명하고 부분별로 알파값 적용시키는 법은 압니다.

 

gdi+를 사용하세요 ㅇㅅㅇ

 

MFC에서 사용하는 gdi의 COLORREF는 4바이트임에도 불구하고 ARGB가 아니라 RGB더군요 ㅠㅠ

 

제가 ARGB로 적용시키는 방법을 여기저기 뒤져봤는데;;;

 

CLR에선 ARGB로 되던데.... MFC에서 System네임스페이스 불러와서 어쩌구 저쩌구 해봤는데 그것도 2008에서나 가능 ㅠ

 

결론은 GDI+밖에 없었습니다.

 

대충 방법을 보자면

 

#include <gdiplus.h>
#include <gdiplusenums.h>

 

추가시켜야 할 헤더파일

 

#pragma comment(lib,"gdiplus.lib")

 

추가해야할 라이브러리 파일

 

using namespace Gdiplus;

 

요걸로 네임스페이스 지정하는게 참 편해요

 

 

간단하게 OnPaint에서 한다고 가정하고

 

CPaintDC dc(this);

 

Image img("png파일 경로와 파일 이름");

 

 

Graphics graphics(dc.m_hDC);

 

graphics.DrawImage(&img,Rect(0,0,img.GetWidth(),img.GetHeight()));

 

 

 

이렇게 해보시면 png를 ARGB적용시켜서 드로우해줍니다.

 

혹시나 원하시는게 이게 아니라면 정말 죄송 ㅠㅠ

이 글에 답변 등록하기
         [답변]re : Lyn 2009-08-17 오후 2:47:27
허준행 (TohnoKanna)  허준행님께 메시지 보내기허준행님을 내 주소록에 추가합니다.허준행님의 개인게시판 가기 번호: 794852 추천:0  

C#에서 제공하는 기본 그래픽 기능은 전부 GDI+ 이기때문에 같은 기능을 VC에서도 사용 가능합니다.

이 글에 답변 등록하기
         [답변]감사합니다^^ 2009-08-18 오후 1:07:53
변창희 (heephyros)  변창희님께 메시지 보내기변창희님을 내 주소록에 추가합니다.변창희님의 개인게시판 가기 번호: 795028 추천:0  

덕분에 큰 도움 받았습니다. 감사합니다.^^

이 글에 답변 등록하기
                 [답변]감사합니다^^ 2009-08-18 오후 1:08:29
변창희 (heephyros)  변창희님께 메시지 보내기변창희님을 내 주소록에 추가합니다.변창희님의 개인게시판 가기 번호: 795030 추천:0  

GDI+를 사용할 수 있다는 걸 몰랐는데.. 정말 감사합니다^^

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2010-서울강남-00026호
서울시 강남구 논현동 87-2 미래빌딩 5층 / TEL. 02_6719_6200 / FAX. 02-6499-1910 / 대표: 홍영준
Copyright ⓒ (주) 데브피아. All rights reserved.