C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[54191] 감사합니다 즐프되세요 ^^(냉무)
공부하는이 [] 1411 읽음    2008-07-31 17:43
Julien 님이 쓰신 글 :
: 아..네..
: 머 각각의 픽셀에 직접 접근해서 하나씩 찍는 거나 파일로 저장되어 있는 것을 한 번에 로드해서 canvas에 그리는 거나 결과적으로 다를 건 없겠네요.
: 근데 느리지 않은가요?
: BitBlt 에서 Blt 가 Block Transfer 의 약자로 알고 있는데 한 픽셀씩 사각형을 그리려면 굉장히 힘들겠네요.
: 그림을 한쪽에서 다른 곳으로 옮길 때 블럭단위로 전송을 해서 빠르게 그림을 복제하도록 하는 것입니다.
: 그리고 굳이 픽셀단위의 접근이 필요하시면 Canvas->Pixel[x][y] = COLOR 로 하시는 것이 더 편합니다.
: 근데 pixel 단위로 접근하는 건 엄청나게 느립니다. TImage 의 Pixel 접근이 워낙 느려서 Graphics32  라는 라이브러리에서는 TImage 보다 100배 정도 빠르다고 주장하는 TImage32 란 걸 만들어냈습니다.
: Pixel 단위로 접근하는 것 보다는 ScanLine 이라는 함수를 이용하는 것이 훨씬 더 빠릅니다.
: ScanLine 은 검색해보시면 많이 나올 겁니다.
:
: 공부하는이 님이 쓰신 글 :
: : 밑에 데이터 같이 RGB 값으로된 데이터를 읽어서 한픽셀씩 for문돌려서 찍은 그림을 말하는거죠 ^^
: : R = Data[0];
: : G = Data[1];
: : B = Data[2];
: : Img->Picture->Bitmap->Canvas->Brush->Color = (TColor)RGB(R, G, B);
: : Img->Picture->Bitmap->Canvas->Rectangle(0, 0, 1, 1);
: : BitBlt(Image->Picture->Bitmap->Canvas->Handle, x, y, 1, 1,
: :     Img->Picture->Bitmap->Canvas->Handle, 1, 1, SRCCOPY);
: :
: : Julien 님이 쓰신 글 :
: : : 아래 예제는...그냥 TImage 안넣고 폼에 그림을 바로 뿌린 겁니다.
: : : Transparent 가 갑자기 생각이 안나서요.
: : : Canvas만 Image1->Picture->Bitmap->Canvas로 바꾸면 똑같이 될 겁니다.
: : :
: : : 근데 픽셀로 찍은 그림...이라는 게 무엇인가요? ^^
: : :
: : : 공부하는이 님이 쓰신 글 :
: : : : 아 배경을 투명하게 하는 옵션이군요
: : : : 이렇게 해도 되네요
: : : : 염치 없지만 픽셀로 찍은 그림과 불러내서 찍은 그림의 차이점은 알수 없을까요?
: : : : 이유도 궁금해서요 ^^
: : : : Julien 님이 쓰신 글 :
: : : : : Transparent 라는 속성이 있습니다.
: : : : : Graphics::TBitmap *bmp1 = new Graphics::TBitmap;
: : : : : bmp1->LoadFromFile(ExtractFilePath(Application->ExeName) + "a.bmp");
: : : : :
: : : : : Graphics::TBitmap *bmp2 = new Graphics::TBitmap;
: : : : : bmp2->LoadFromFile(ExtractFilePath(Application->ExeName) + "b.bmp");
: : : : : bmp2->Transparent = true;
: : : : :
: : : : : this->Canvas->Draw(0, 0, bmp1);
: : : : : this->Canvas->Draw(0, 0, bmp2);
: : : : :
: : : : : delete bmp1;
: : : : : delete bmp2;
: : : : :
: : : : : 공부하는이 님이 쓰신 글 :
: : : : : : a그림은 데이터를 픽셀로 찍어서 만든 그림입니다.
: : : : : : b는 글자만 덮어 씌울 그림입니다.
: : : : : : c는 프로그램으로 덮은건데 그런 모양이 나옵니다.
: : : : : :
: : : : : : a그림을 그냥 그림 파일로 읽으면 상관없이 글자만 잘 써지는데
: : : : : : 픽셀로 찍은 그림은 검은색 배경까지 써지는 이유를 모르겠습니다.
: : : : : : 어떤이유가 있을까요?
: : : : : : 그럼 즐프 되세요
: : : : : :
: : : : : : 소스는 다음과 같이 했습니다.
: : : : : : b그림을 마스크 해서 글자만 만들고
: : : : : : MaskImg->Picture->Bitmap->Mask(clBlack);
: : : : : :
: : : : : : StretchBlt(Image1->Picture->Bitmap->Canvas->Handle, 20, 40, MaskImg->Width, MaskImg->Height,
: : : : : :                 MaskImg->Picture->Bitmap->Canvas->Handle, 0, 0, MaskImg->Width, MaskImg->Height, SRCAND);
: : : : : : StretchBlt(Image1->Picture->Bitmap->Canvas->Handle, 20, 40, Image2->Width, Image2->Height,
: : : : : :                 Image2->Picture->Bitmap->Canvas->Handle, 0, 0, Image2->Width, Image2->Height, SRCINVERT);

+ -

관련 글 리스트
54183 글자만 그림에 띄우고 싶습니다. 공부하는이 1327 2008/07/31
54185     Re:글자만 그림에 띄우고 싶습니다. Julien 1418 2008/07/31
54186         Re:Re:글자만 그림에 띄우고 싶습니다. 공부하는이 1165 2008/07/31
54187             Re:Re:Re:글자만 그림에 띄우고 싶습니다. Julien 1229 2008/07/31
54189                 Re:Re:Re:Re:글자만 그림에 띄우고 싶습니다. 공부하는이 1404 2008/07/31
54190                     Re:Re:Re:Re:Re:글자만 그림에 띄우고 싶습니다. Julien 1539 2008/07/31
54191                         감사합니다 즐프되세요 ^^(냉무) 공부하는이 1411 2008/07/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.