次の方法で共有


Real-Time スタイラス サンプルを使用した Windows Touch Scratchpad (C#)

Windows Touch Scratchpad サンプル (MTScratchpadRTStylus) は、Windows タッチ メッセージを使用して、タッチ ポイントのトレースをウィンドウに描画する方法を示しています。 デジタイザーに最初に付けた指の跡は黒で描かれます。 2 番目の指は、赤、緑、青、シアン、マゼンタ、黄色の 6 色で描画されます。 次のスクリーン ショットは、実行中にアプリケーションがどのように表示されるかを示しています。

リアルタイム スタイラスを使用した Windows タッチ スクラッチパッドのサンプルを示すスクリーン ショット (画面に黒と赤の波線が付いています)

このサンプルでは、Real-Time スタイラス (RTS) オブジェクトが作成され、複数の連絡先ポイントのサポートが有効になります。 コンテンツをレンダリングするために、DynamicRenderer プラグインが RTS に追加されます。 プラグイン EventHandlerPlugIn は、指の数を追跡し、動的レンダラーが描画している色を変更するために実装されています。 RTS プラグイン スタック内の両方のプラグインを使用すると、Windows Touch Scratchpad アプリケーションは、主連絡先を黒でレンダリングし、残りの連絡先をさまざまな色でレンダリングします。

次のコードは、EventHandlerPlugIn が連絡先の数をインクリメントしてデクリメントし、動的レンダラーの色を設定する方法を示しています。

        public void StylusDown(RealTimeStylus sender, StylusDownData data)
        {
            // Set new stroke color to the DrawingAttributes of the DynamicRenderer
            // If there are no fingers down, this is a primary contact
            dynamicRenderer.DrawingAttributes.Color = touchColor.GetColor(cntContacts == 0);

            ++cntContacts;  // Increment finger-down counter
        }

        public void StylusUp(RealTimeStylus sender, StylusUpData data)
        {
            --cntContacts;  // Decrement finger-down counter
        }

次のコードは、複数の連絡先ポイントのサポートを使用して RTS を作成する方法を示しています。

        private void OnLoadHandler(Object sender, EventArgs e)
        {
            // Create RealTimeStylus object and enable it for multi-touch
            realTimeStylus = new RealTimeStylus(this);
            realTimeStylus.MultiTouchEnabled = true;

            // Create DynamicRenderer and event handler, and add them to the RTS object as synchronous plugins
            dynamicRenderer = new DynamicRenderer(this);
            eventHandler = new EventHandlerPlugIn(this.CreateGraphics(), dynamicRenderer);
            realTimeStylus.SyncPluginCollection.Add(eventHandler);
            realTimeStylus.SyncPluginCollection.Add(dynamicRenderer);

            // Enable RTS and DynamicRenderer object, and enable auto-redraw of the DynamicRenderer
            realTimeStylus.Enabled = true;
            dynamicRenderer.Enabled = true;
            dynamicRenderer.EnableDataCache = true;
        }

DynamicRenderer オブジェクトの色が変更され、ストロークが描画されると、DynamicRenderer::Refresh を呼び出すと、新しいストロークが表示されます。 次のコードは、OnPaintHandler メソッドでこれを実行する方法を示しています。

        private void OnPaintHandler(object sender, PaintEventArgs e)
        {
            // Erase the background
            Brush brush = new SolidBrush(SystemColors.Window);
            e.Graphics.FillRectangle(brush, ClientRectangle);

            // Ask DynamicRenderer to redraw itself
            dynamicRenderer.Refresh();
        }

マルチタッチ スクラッチパッド アプリケーション (RTS/C#)マルチタッチ スクラッチパッド アプリケーション (RTS/C++)Windows タッチ サンプル