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
[10573] Re:[질문] 다시...한번..이미지.....!!!!!!!!!!!!!!!!1
개박살.U&I [inutero] 1201 읽음    2001-09-04 03:32

안녕하세요? 개박살입니다..

답변이 모자랐군요.. ^^;

DrawGird에 그림을 뿌리는 걸 설명드리죠

DrawGird의 이벤트중에 OnDrawCell이라는 거 보이시죠? 그걸 더블클릭해서 함수를 작성하시는데,

void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
     if (ACol > 0 && ARow > 0)  {
         Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
         Bitmap1->LoadFromFile("C:\\test.bmp");
         DrawGrid1->Canvas->Draw(Rect.Left, Rect.Top, Bitmap1);
         delete Bitmap1;
     }
}

이렇게 작성을 하시면, 각 Cell들이 그리질때마다 이 함수가 호출되어서 각 셀의 영역에다가

그림을 그리게 됩니다. C:\Test.bmp를 하나 만들어서 테스트 해보세요 그려진답니다.

글구 퍼즐프로그램은,

그림을 통째로 하나올려서 각 셀에 맞추어서 잘라서 그것들이 움직여야 하겠네요?

이건 예제가 넘 크네요 ^^; 참고로 말씀드리자면, 일단, 그림은 각셀뿐만아니라 그리드 전체에

그릴수가 있습니다.

폼의 OnShow에다가 위에 함수있죠? 그걸 이렇게 걸어보세요

         Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
         Bitmap1->LoadFromFile("C:\\test.bmp");
         DrawGrid1->Canvas->Draw(0, 0, Bitmap1);
         delete Bitmap1;

그리드의 0,0 좌표 즉, 그리드 전체에 본 그림이 나타나게 되죠?

이걸 이용해서 일단, 그리드전체에 그림을 뿌려주고, 그림들을 셀의 갯수만큼

각 셀의 영역 좌표로 잘라서 Stream 배열에 저장을 하세요

그래서 그 Stream을 각 셀의 위치에 따라서 그리드의 셀에다가 뿌려주면 되는거죠..

물론 제생각입니다. ^^;

참고로,,
프로그램은, 남이 짜논 소스를 카피해서 쓰면 절대!! 실력이 늘지 않습니다.
그렇다고 혼자 죽도록 파고들어서 고생할 필요도 없죠
방향만 도움을 받고, 그 구현은 직접 밤을 새워서 해보셔야 합니당~
실력있는 프로그래머치고, 그런경험이 많으면 많았지 적은 사람은 없을꺼예요
(물론 제가 잘한다는건 아닙니다 ^^; 저도 허접수준...)

그럼 성공하세요~~!


최효진 님이 쓰신 글 :
: 제 질문의 의도는 드리그그리드에서!!!
: 그림을 하나 하나씩 뿌리려고 하는데.... 밑에 처럼...하니깐... 안되더라군요!!!
: 드리그에..에서 캔버스로 연결하여...그림을 뿌리어더니..그림이 뿌려지긴 하는데..안보여요..어케해야 한는지... 그리고 그림을 여러개 자라려고 하는데...그런것두 안되더란군요... 그것좀 해결주세요...!!!
:
:
:              Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
:              Bitmap1->LoadFromFile("C:\\Borland\\Borland Shared\\Imagesfactory.bmp");
:              Canvas->Brush->Bitmap = Bitmap1;
:   ????-->    DrawGrid->Canvas->FillRect(Rect(0,0,100,100));
:              delete Bitmap1;
:
:
: 참고로... 그림퍼즐을 작성할려고 합니당.... 조언 부탁드립니당....!!!!!!!!!!!
:
: 제주에서.....
:
:
:
:
:
:
:
:

+ -

관련 글 리스트
10570 [질문] 다시...한번..이미지.....!!!!!!!!!!!!!!!!1 최효진 993 2001/09/04
10573     Re:[질문] 다시...한번..이미지.....!!!!!!!!!!!!!!!!1 개박살.U&I 1201 2001/09/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.