|
고맙습니다..
그러면 ..trackbar를 통하여..가로/세로를 동일한 비율로 축소/확대하는것은 불가능한가요?
혹 runtime 에서 이미지의 사이즈를 가로/세로 동일한 비율로 줄였다/늘였다 할수 있는 좋은 방법이 있나요?
WM_SYSCOMMAND를 통해서...마우스 커서를 변경하면서 하려하니,image는 Handle이없어서..
if(X < 4 && Y < 4)
SysCommWparam = SC_DRAG_RESIZEUL;
else if(X > SenderControl->Width-4 && Y > SenderControl->Height-4)
SysCommWparam = SC_DRAG_RESIZEDR;
else if(X < 4 && Y > SenderControl->Height-4)
SysCommWparam = SC_DRAG_RESIZEDL;
else if(X > SenderControl->Width-4 && Y < 4)
SysCommWparam = SC_DRAG_RESIZEUR;
else if(X < 4)
SysCommWparam = SC_DRAG_RESIZEL;
else if(X > SenderControl->Width-10){
SysCommWparam = SC_DRAG_RESIZER;
}
else if(Y < 4)
SysCommWparam = SC_DRAG_RESIZEU;
else if(Y > SenderControl->Height-4)
SysCommWparam = SC_DRAG_RESIZED;
else
SysCommWparam = SC_DRAG_MOVE;
ReleaseCapture();
//* 이런 형태의 것도 안되고 ...
SendMessage(Image1->Handle, WM_SYSCOMMAND, SysCommWparam, 0);
질문 드렸던것은 .. 델파이 examp code에서 이미지의 가로/세로를 동일한 비율로 줄였다 늘였다 하려면..
formshow에서...
trackbar1->Posision = Image1->Width;
trackbar1->Posion = Image1->Height;
하고 trackbar의 이벤트 처리 루틴에서..
Image1->Width=TrackBar1->Position
Image1->Height= TrackBar1->Position;
이렇게 하니까.... 이미지의 사이즈가 동일한 비율로 가로세로 확대/축소 되는것 같아서 .. 질문을 드렸던 것인데...
장성호 님이 쓰신 글 :
: 원래 TImage의 크기가 가로 세로 다르네요
:
: Image1Click에서 하면
: Image를 Click하기 전까지는 원래 Size를 보여주는것이죠
:
: 두번째로 FormShow 할때
:
: Image의 Width와 Height를 TrackBar1->Position 으로 설정하셨는데...
:
: FormShow에서 다음코드를 실행함과 동시에
: TrackBar1->Position = Image1->Width;
: TrackBar1Change이벤트가 뜹니다.
:
: 즉 FormShow에서 TrackBar1->Position을 Image1->Width로 수정하면
: TrackBar1Change이벤트가 발생하여 Image1->Height도 같이 바뀌어 버리죠
: 그런후에 다음코드 TrackBar1->Position = Image1->Height; 는 아무 의미 없는 코드가 되죠
:
: TrackBar의 Position을 코딩으로 값을 변경하더라도
: TrackBar의 OnChange 이벤트 핸들러가 발생한다는것에 주의하시면 될것 같습니다.
:
: 그럼..
:
:
: linuxman 님이 쓰신 글 :
: : 안녕하세요...
: :
: : 이미지의 크기를 실행되었을때.. 크기를 줄였다/늘였다를 트랙바를 통해서 하려고 합니다.
: : 마우스가 클릭되었을때...
: : 1. 트랙바의 위치를 이미지로 크기로 설정하였다가,
: : 2. 트랙바가 변화되면..그때의 position값을 이미지에 적용하는것인데..
: :
: : 최초의 위치지정을 FormShow에서 했을때와 , image1이 클릭됐을하는것과 차이가 있는 부분이 있는것 같습니다.
: : 아래의 것을 컴파일해보시면.. FormShow를 주석처리하고, Image1Click로 컴파일해보면...
: : 최초이미지의 크기가 줄어들었다가..trackbar의 적용을 받는것같습니다..
: :
: : FormShow에서 했을때와 , image1이 클릭됐을하는것에 어떤 차이가 있어서 이런현상이 일어나는지 궁금합니다.
: : (실제로 폼에는 동적으로생성한 여러개의 이미지들이 있어서,, 하나의 트랙바에 여러개의 이지의 사이즈를 할당할수 없어서, 선택된 이미지를 trackbar 에 설정하는 형태로 했는데...)
: :
: : void __fastcall TForm1::TrackBar1Change(TObject *Sender)
: : {
: : Image1->Width=TrackBar1->Position;
: : Image1->Height= TrackBar1->Position;
: : }
: :
: : void __fastcall TForm1::FormShow(TObject *Sender)
: : {
: :
: : /* FormShow 에서 image1의 사이즈를 trackbar에 할당하면...
: : 원하는 대로 잘됩니다. */
: : TrackBar1->Position = Image1->Width;
: : TrackBar1->Position = Image1->Height;
: : }
: :
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Image1Click(TObject *Sender)
: : {
: : /* 위의 formshow에 있는 두줄을 주석처리 하고
: : 아래의 것을 주석을 풀고 컴파일하면...
: : 그리고 실행된 후에...먼저 Image1을 선택(클릭 ) 후 trackbar를 끌어보면...
: : trackbar가 최초의 position 값 10 이 적용되어...이미지가 10정도도 변했다가...
: : 트랙바의 적용을 받게 됩니다...
: : 위의 formshow에서 처럼하고 싶은데...
: : */
: : //TrackBar1->Position = Image1->Width;
: : // TrackBar1->Position = Image1->Height;
: : }
: : //---------------------------------------------------------------------------
: : //---------------------------------------------------------------------------
: :
: :
: : 수고하세요.
|