|
백상열 님이 쓰신 글 :
: 안녕하세요.. C++빌더시작 2일된 왕초보입니다.
: C언어빼곤 아무것도 아는게없습니다.
: b.bmp를 읽어 일부분떼서 폼에있는 Image1의 100,100위치에 그려줄려고하는데,
: 정말 어렵군요.. 게다가 C++빌더까지 만만치않아서.. 끄응~
: 고수님의 한수가르침을..부탁합니다.
: 다음처럼 코딩/컴파일 해봤는데.. 에러는없는데, 100,100 위치에 30x30 캐릭터가
: 안나옵니다. 뭐가 잘못되었나요..?
:
: {
: Graphics::TBitmap *F = new Graphics::TBitmap;
: Graphics::TBitmap *G = new Graphics::TBitmap;
: F->LoadFromFile("C:\\b.bmp"); // 30x30 크기
: G->Width=30;
: G->Height=30;
: G->Canvas->CopyRect(Rect(100,100,30,30),F->Canvas,Rect(0,0,30,30));
: F->Free();
: G->Free();
: }
:
: ps: 이곳게시판도처음이지만 참 좋은곳이라 느껴집니다 앞으로 많은활동하겠습니다.
: (물론 첨에는 질문뿐이라 생각되지만..)
안녕하세요..
비트맵 G의 크기가 30,30인데, Left, Top위치를 100,100으로 줬으니 안되겠죠..
이미지크기가 30,30인데, 100,100위치에 출력하라고 했으니 당연히 출력이 안됩니다.
그리고, CopyRect(Rect(left, top, right, bottom))에서, right, bottom은 left, top보다 커야합니다.
right, bottom은 너비와, 높이가 아니라, 위치정보입니다.
아래와같이 한번 해보세요.
//-----------------------------------------------------------------------
Graphics::TBitmap *Source = new Graphics::TBitmap;
Source->LoadFromFile("C:\\b.bmp");
Image1->Canvas->CopyRect(Rect(100,100,130,130), Source->Canvas, Rect(0,0,30,30));
delete Source;
//-----------------------------------------------------------------------
Image1은 TImage컴포넌트 입니다.
원본이미지의 (0,0,30,30)의 영역에 해당하는 이미지를 읽어와서, 화면상의 (100,100,130,130)위치에
출력하라는 코드입니다.
여기서 주의 할것은, 복사되는 대상의 Width, Heght가 정해진 영역보다 커야한다는 겁니다.
Rect(100,100,130,130)해놓고, Width, Height가 130이 안되면 화면에 출력이 되지 않겠죠.
그런부분을 고려하시면 됩니다.
그럼.
|