| Graphics |
カスタムポインタの定義
Pointerプロパティをcustomに設定すると、MATLABはPointerShapeCDataおよびPointerShapeHotSpotプロパティを使って、ユーザが定義するポインタを表示します。カスタマポインタは16×16ピクセルで、各ピクセルは白、黒、透明のいずれかとすることができます。
つぎのような要素を含む16×16の行列を作成することによってポインタを設定します。
行列をFigureのPointerShapeCDataプロパティに割り当てます。ポインタがそのFigureウィンドウ内にあるときには、MATLABは定義したポインタを表示します。
PointerShapeHotSpotプロパティは、ポインタの位置を示すピクセルを設定します。そしてMATLABは、この位置をRootのPointerLocationプロパティに格納します。PointerShapeHotSpotプロパティを、位置を設定するピクセルに対応するPointerShapeCData行列の行と列を設定する2要素ベクトルに設定します。このプロパティのデフォルト値は[1 1]で、これはポインタの左上隅に対応しています。
例題 - カスタムポインタ
カスタムポインタを作成する1つの方法は、手入力で16×16の行列に値を割り当てることです。たとえば
まず、すべての値を2に設定して行列を初期化します。1ピクセル幅の黒の境界を作成します。整列マークを追加します。
P = ones(16)+1;
P(1,:) = 1; P(16,:) = 1;
P(:,1) = 1; P(:,16) = 1;
P(1:4,8:9) = 1; P(13:16,8:9) = 1;
P(8:9,1:4) = 1; P(8:9,13:16) = 1;
P(5:12,5:12) = NaN; % 中央に透明な領域を作成します。
set(gcf,'Pointer','custom','PointerShapeCData',P,...
'PointerShapeHotSpot',[9 9])
最後のステートメントは、Pointerプロパティをcustomに設定し、行列をPointerShapeCDataプロパティに割り当て、"ホットスポット"を要素(9,9)として選択します。
MATLABは、Figureウィンドウ内部でカスタムポインタを使用します。
関数からポインタを作成 数学関数を使って、PointerShapeCData行列を定義することができます。たとえば、関数
g = 0:.2:20; [X,Y] = meshgrid(g); Z = 2*sin(sqrt(X.^2 + Y.^2)); mesh(Z);
Zが16×16の行列になるように、Zの値を用いてサンプリング点数の少ないポインタを作成します。
g = linspace(0,20,16); [X,Y] = meshgrid(g); Z = 2*sin(sqrt(X.^2 + Y.^2)); set(gcf,'Pointer','custom',... 'PointerShapeCData',flipud((Z>0) + 1))
ステートメントflipud((Z>0) + 1)
は、ゼロより大きなZのすべての値を2(MATLABではtrue+1=2)、ゼロ以下を1(false+1=1)に設定し、データを反転させて要素(1,1)が左上隅になるようにします。
| Figureポインタの設定 | 対話型グラフィックス |