수평으로 객체 추가안녕,
JMP 9에서 디지털 사진 폴더를 탐색할 수 있는 작은 이미지 뷰어를 직접 만들어서 아래 스크립트를 포함시켰습니다. 문제는 도구를 사용하는 동안 이미지가 표시되는 목록 상자와 그래프 상자의 상대적 위치를 유지하고 싶다는 것입니다. 현재 목록에서 이미지를 선택하여 기존 이미지를 대체하면 새 그래프 상자가 목록 아래에 추가됩니다. 원래 위치와 같은 목록 오른쪽에 나타나도록 하고 싶습니다. 이유는 "<< append" 속성이 새 차트를 세로로 연결하기 때문입니다. 문제는 스크립트를 어떻게 수정하여 가로로 연결하도록 할 수 있을까요?
// 프로그램 시작;
로그 지우기();
사진 폴더= "C:\내 사진\카메라 카드 1\102_FUJI\";
이미지 목록= 디렉토리의 파일(사진폴더 ); // 모든 파일은 JPEG이므로 필터링할 필요가 없습니다.
Expr_Create_Image= 표현(
ImageName = PhotoFolder || ImageList [ ImageNumber ] ;
영국= 그래프 상자(
프레임 크기 (410, 308 ),
X 스케일( 0, 100 ),
그리고 규모( 0, 100 ),
<<배경색 ( {0.7, 0.7, 0.7} ),
<<이미지 추가 (열려 있는(이미지 이름 ),경계 (왼쪽( 5 ), 오른쪽( 95 ),맨 위 (95 ),맨 아래 (5 ) ) )
);
// 축을 보고 싶지 않으니 제거하세요.
gb [ axisbox (2 )] <<삭제;
gb [ axisbox (1 )] <<삭제;
);
Expr_Replace_Chart= 표현(
nw [ OwnerBox (1 )] <<삭제; // 창에서 이전 항목을 삭제합니다.
북서<<추가 ( gb ); // 새로운 것을 추가합니다.
);
파운드= 목록 상자(
이미지 목록,
이미지 번호=( 파운드<<선택된 인덱스를 가져옵니다 )[1];
평가하다(Expr_Create_Image ); // 새로운 그래프 상자를 만듭니다.
평가하다(Expr_Replace_Chart ); // 이전 그래프를 새로운 그래프로 대체합니다.
,
최대 선택됨 (1 )
);
이미지 번호= 1; // 처음에는 첫 번째 것을 보여줍니다.
평가하다(Expr_Create_Image ); // 차트를 생성합니다.
파운드<<선택된 설정 ( ImageNumber, 1 ); // 목록의 첫 번째 요소를 미리 선택합니다.
북서= 새 창( "새로운 창", H 목록 상자(파운드,영국 ) ) ); // 창을 표시합니다.
// 프로그램 종료;
더 일반적으로, 제가 지금 하고 있는 방식처럼 디스플레이 창을 부분적으로 분해했다가 다시 재구성할 필요 없이, 원래 차트를 새 차트로 간단히 바꿀 수 있는 방법이 있을까요? 가장 확실한 해결책은 그래프 상자 안의 초기 이미지를 목록 상자에서 선택한 새 이미지로 바꾸는 것이지만, 저는 그렇게 할 수 없는 것 같습니다. 같은 그래프 상자에서 "<< 이미지 추가" 속성을 두 번째로 사용해도 작동하지 않는 것 같습니다. 그래서 저는 지금 매번 새 그래프 상자를 만들고 있습니다.
어떤 제안이라도 감사히 받겠습니다.
제목: 객체를 가로로 추가하는 방법정말 훌륭합니다 ! 방금 제가 현재 개발 중인 범용 그래픽 파일 브라우저 애플리케이션에 위의 내용을 통합했습니다. 아마도 제가 수정할 부분은 (410x308) 화면 비율을 입력되는 모든 이미지 크기에 맞게 일반화하는 것뿐일 겁니다. 제가 보고 있는 이미지에는 JMP 그래프 상자에서 내보낸 출력물이 포함될 수 있는데, 이 출력물은 원칙적으로 어떤 크기든 될 수 있기 때문입니다. 위의 내용을 파일 교환(File Exchange)에 제출해 보는 건 어떠세요? 여기에는 픽처 박스 사용, 출력 창에서 구성 요소 교체, 그리고 기타 여러 가지 실용적인 예제가 있습니다. 핵심적인 요소이며, 다양한 잠재적 용도를 상상하는 것은 어렵지 않습니다.
다시 한번 진심으로 감사드립니다!
객체를 가로로 추가하기재밌었어요. 앱 용량이 너무 커질 위험이 있지만, 현재 이미지를 회전하고 확대/축소하는 버튼이 있는 버전도 함께 올려드립니다. Alt 키를 누르면 기능이 반전됩니다.
이미지 목록 = 디렉토리의 파일 ( PhotoFolder = ) 디렉토리 선택 () ) ;
이미지 번호 = 1 ;
Expr_pb = Expr ( pb = 패널 박스 ( , 픽처 박스 ( img ) ) ) ;
Expr_Create_Image = Expr (
ImageName = PhotoFolder || ImageList [ ImageNumber ] ;
img = 열려 있는 ( ImageName , jpg ) ;
img_size = img << getsize ;
만약 ( img_size [ 1 ] > img_size [ 2 ] ,
이미지 << 크기 설정 ( { 410 , 308 } ) ,
이미지 크기 설정 ( { 308 , 410 } )
);
Expr_pb ;
);
Expr_replace_image = Expr (
nw[패널 박스( 1 )] << delete;
hlb << append ( pb ) ;
);
rotate = 버튼 상자 ( "회전" ,
Alt 키 () 인 경우
이미지 << 회전 ( -90 ) ,
이미지 << 회전 ( 90 )
);
Expr_pb ;
Expr_replace_image ;
);
줌 = 버튼 상자 ( "확대/축소" ,
Alt 키 () 인 경우
이미지 << 크기 설정 ( 평가 목록 ( {( 이미지 << 크기 가져오기 )[ 1 ] / 1.5 , ( 이미지 << 크기 가져오기 )[ 2 ] / 1.5 } ) ) ,
img << set size ( 평가 목록 ( {( img << get size )[ 1 ] * 1.5 , ( img << get size )[ 2 ] * 1.5 } ) )
);
Expr_pb ;
Expr_replace_image ;
);
회전 << 팁 설정 ( "오른쪽으로 90° 회전, Alt 키를 누른 상태로 왼쪽으로 90° 회전" ) ;
줌 << 팁 설정 ( "크기를 늘리려면 누르고, Alt 키를 누른 상태로 줄이려면 Alt 키를 누르세요" ) ;
파운드 = 목록 상자 (
이미지 목록 ,
ImageNumber = ( lb << 선택된 인덱스 가져오기 )[ 1 ] ;
Expr_Create_Image ;
Expr_replace_image ;,
최대 선택됨 ( 1 )
);
Expr_Create_Image ;
nw = 새 창 ( "시험" , hlb = H 리스트 박스 ( V 목록 상자 ( lb , rotate , zoom ) , pb ) ) ;
제목: 객체를 가로로 추가하는 방법완벽해요! 제가 딱 필요했던 거고, 덕분에 작업도 훨씬 간단해졌어요. 정말 감사합니다!
Re: 수평으로 객체 추가다음은 image<를 사용하는 예(원래 아이디어 수정)입니다.
이미지 리스트 = 디렉토리의 파일 ( PhotoFolder = 디렉토리 선택 () ) ;
이미지번호 = 1 ;
Expr_Create_Image = 표현 (
ImageName = PhotoFolder || ImageList [ ImageNumber ] ;
img = 열려 있는 ( 이미지이름 , jpg ) ;
img_size = img << getsize ;
만약 ( img_size [ 1 ] > img_size [ 2 ] ,
img << 크기 설정 ( { 410 , 308 } ) ,
img << 크기 설정 ( { 308 , 410 } )
);
pb = 그림 상자 ( img ) ;
bb = 패널 상자 ( , pb ) ;
);
Expr_replace_image = 표현(
nw[패널 박스( 1 )] << delete;
hlb << 추가 ( bb ) ;
);
파운드 = 목록 상자 (
이미지리스트 ,
ImageNumber = ( lb << 선택된 인덱스 가져오기 )[ 1 ] ;
평가 ( Expr_Create_Image ) ;
평가하다( Expr_replace_image );,
최대 선택됨 ( 1 )
);
평가하다( Expr_Create_Image );
nw = 새 창 ( "시험" , hlb = H 목록 상자 ( lb , bb ) )
수평으로 객체 추가훌륭하네요. 정말 감사합니다! (사실, 이 기능을 전반적으로 더 유용하게 만들 수 있는 방법은 각 이미지가 로드될 때 크기를 결정하는 것입니다. 만약 그렇게 할 수 있다면, 현재처럼 세로 모드로 촬영된 모든 사진을 가로 모드로 압축하는 대신, 각 차트를 항상 올바른 종횡비로 만들 수 있을 겁니다. 당장은 그렇게 할 방법이 떠오르지 않지만, 불가능하다는 뜻은 아닙니다. 혹시 방법을 아시는 분이 계시다면 알려주시면 감사하겠습니다.)
다시 한번 감사드립니다.
데이비드
수평으로 객체 추가괜찮은 작은 애플리케이션이네요! 문제의 일반화(gb를 대체하는 대신 수정)는 아직 살펴보지 않았지만, 가로 레이아웃을 유지하는 것처럼 보이는 작은 변경을 했습니다. 아래 스크립트에서는 변경된 줄만 보여줍니다.
...
Expr_Replace_Chart = 표현 (
nw [ OwnerBox ( 1 )] << 삭제 ; // 창에서 이전 항목을 삭제합니다.
hlb << append ( gb ) ; // 새 항목을 H 목록 상자에 추가합니다.
);
...
노력하다 ( 평가하다 ( Expr_Create_Image )) ; // 차트를 생성합니다. // 처음에 오류 메시지가 나타나지 않도록 이것을 try에 포함했습니다.
...
nw = 새 창 ( "새 창" , hlb = H 목록 상자 ( 파운드 , gb ) ) ; // 창을 표시합니다. H List Box에 참조를 제공합니다.
...