|
TImage에서 그런기능이 없으니 직접 구현해줘야 합니다.
[원리]
1. 처음에 파일에서 load할때 TImage가 아닌 따로 메모리(Graphics::TBitmap )에 load하세요
2. MouseDown , MouseMove 이벤트를 이용해서 Mouse가 Click된 상태로 움직인 거리를 계산해서
3. MouseMove이벤트에서 이미지를 bitmap에서 Image->Canvas에 일정영역만 Copy해주면 됩니다.
그럼..
새로운 희망.. 님이 쓰신 글 :
: 제가 BMP이미지 출력을 해서 일정 영역을 처리하는 것을 구현할려고 하는데요..
: 아래와 같이 했습니다.
: .
: 일단 Image1에 BMP가 출력시는 것은 되는데 Image1의 크기가 345*273픽셀입니다.
: 그런데 만약 이보다 큰 BMP를 열면 왼쪽 윗 부분만 345*273만큼만 보이는데...
: 여기서 Image1에 출력된 그림을 마우스를 사용해서 움직여서 원하는 부분으로 이동하고 싶은데요..
: 방법이 없을까요?
: .
: void __fastcall TForm1::BitBtn1Click(TObject *Sender)
: {
: char string[100];
: int i;
:
: OpenPictureDialog1->Title="Open BMP File";
: if(!OpenPictureDialog1->Execute())
: {
: Memo1->Lines->Append("Please select the BMP file again!!");
: return;
: }
: Image1->Picture->
: OpenedFileName->Text=OpenPictureDialog1->FileName;
: Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
: Memo1->Lines->Append("BMP File Open success!!");
: Memo2->Lines->Append("BMP File");
: if(Image1->Picture->Bitmap->PixelFormat!=pf24bit)
: {
: Memo1->Lines->Append("Only 24bit Color BMP image support!!");
: Memo1->Lines->Append("Please select the BMP file again!!");
: okimage=false;
: BitBtn2->Enabled=false;
: BitBtn4->Enabled=false;
: return;
: }
: sprintf(string,"BMP Image Size : Height=%d, Width=%d",Image1->Picture->Bitmap->Width,Image1->Picture->Bitmap->Height);
: Memo2->Lines->Append(string);
: selected=false;
: okimage=true;
: }
|