|
장성호 님이 쓰신 글 :
: 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;
: : }
|