差分

ナビゲーションに移動 検索に移動

ピンチ

1,862 バイト追加, 2018年8月3日 (金) 02:24
ページの作成:「'''ピンチ'''(英語pinch)とは、日本語に訳すと「挟む」という意味であり、コンピューターの世界では主にマルチ...」
'''ピンチ'''([[英語]]:[[pinch]])とは、日本語に訳すと「挟む」という意味であり、[[コンピューター]]の世界では主に[[マルチタッチ]]において2本の指を開いたり閉じたりする動作を指す。

ピンチに対応する処理はほとんどのアプリで「拡大縮小」となっている。指でクパー感は直感的でわかりやすい。

非常に稀な例だが、お絵かきソフトで「直線を引く」になっていたものもあったが、これはあまり使い勝手の良いものではなかった。

== 実装例 ==
[[MonoGame]]での実装例を示す。<syntaxhighlight lang="csharp" line="1" start="0">
bool _pinching = false;
float _pinchInitialDistance;

private void HandleTouchInput()
{
if (TouchPanel.IsGestureAvailable)
{
GestureSample gesture = TouchPanel.GetGesture();

if (gesture.GestureType == GestureType.Pinch)
{
// current positions
Vector2 a = gesture.Position;
Vector2 b = gesture.Position2;
float dist = Vector2.Distance(a, b);

// prior positions
Vector2 aOld = gesture.Position - gesture.Delta;
Vector2 bOld = gesture.Position2 - gesture.Delta2;
float distOld = Vector2.Distance(aOld, bOld);

if (!_pinching)
{
// start of pinch, record original distance
_pinching = true;
_pinchInitialDistance = distOld;
}

// work out zoom amount based on pinch distance...
float scale = (distOld - dist) * 0.05f;
ZoomBy(scale);
}
else if (gesture.GestureType == GestureType.PinchComplete)
{
// end of pinch
_pinching = false;
}
}
}
</syntaxhighlight>
匿名利用者

案内メニュー