open("DemoSlide2.bmp"); //開始前に同名のウィンドウが開いているとうまく動かないので注意。 run("Copy"); //全画面をコピー n=20; //作成するアニメーションのスライス数 for(slice=2;slice<=n;slice++){ //n枚のスタックになるまでコピペする run("Add Slice"); //Image>Stacks>Add sliceと同等 run("Paste"); } open("DemoSlide3.bmp"); makeOval(1179, 650, 217, 217); //STAT二量体を選択枠で囲む run("Copy"); selectWindow("DemoSlide2.bmp"); //run("Restore Selection"); //次のmakeOvalがあるので不要である。 for(slice=1;slice<=n;slice++){ setSlice(slice); //スライスを順に選択 //均等に少しずつずらした位置に上と同じ大きさの選択枠を設定。スタートの位置が(1155,626)、最後の位置が(626,939)。 makeOval(1155-(1155-626)/(n-1)*(slice-1), 626+(939-626)/(n-1)*(slice-1), 217, 217); run("Paste"); //次の命令は通常 "angle=-30 grid=1...."などとなっているが、30のところを(-360/(n-1)*(slice-1))で置き換えている。 //演算子"+"は文字列の結合にも使えることに注意。 //(-360/(n-1)*(slice-1))のところまで""で囲ってしまうと数式でなく文字と思われてしまう。 run("Arbitrarily...", "angle="+(-360/(n-1)*(slice-1))+" grid=1 interpolation=Bilinear slice"); } run("Select None"); //選択枠が残ると目障りなので消す。