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ポインタの設定 | 対話型グラフィックス | ![]() |