|
원래 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;
: }
: //---------------------------------------------------------------------------
: //---------------------------------------------------------------------------
:
:
: 수고하세요.
|