4369


<http://codezine.jp/article/detail/6091>
にあったサンプルコードをほぼそのまま使用したのですが、四角形の描写が行われません。  
原因がよくわらないです。よろしくお願いします。

MainWindow.xaml

[code]

    <Window x:Class="touch_test.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Canvas x:Name="Canvas" HorizontalAlignment="Left" Height="319" VerticalAlignment="Top" Width="517" MouseDown="Canvas_MouseDown" TouchDown="Canvas_TouchDown">
    
        </Canvas>
    </Window>
    
[/code]

* * *

MainWindow.xaml.cs

[code]

    namespace touch_test
    {
        /// <summary>
        /// MainWindow.xaml の相互作用ロジック
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Canvas_TouchDown(object sender, TouchEventArgs e)
            {
                // 四角形用変数
                Rectangle rect = new Rectangle();
                // 四角形の幅と高さを設定
                rect.Width = 50;
                rect.Height = 50;
    
                // 乱数を使用して色を作成
                Random r = new Random();
                byte alpha = (byte)128;
                byte red = (byte)r.Next(0, 256);
                byte green = (byte)r.Next(0, 256);
                byte blue = (byte)r.Next(0, 256);
    
                // 作成した色で四角形を塗りつぶす
                rect.Fill = new SolidColorBrush(Color.FromArgb(alpha, red, green, blue));
    
                // ★★★タッチされた位置を取得★★★
                var tp = e.GetTouchPoint(Canvas);
                // 四角形を描画する位置をタッチされた位置にする
                rect.RenderTransform = new TranslateTransform(tp.Position.X - rect.Width / 2, tp.Position.Y - rect.Height / 2);
    
                // 作成した四角形をcanvas1に追加（表示）する
                Canvas.Children.Add(rect);
            }
    
            private void Canvas_MouseDown(object sender, MouseButtonEventArgs e)
            {
                // 四角形用変数
                Rectangle rect = new Rectangle();
                // 四角形の幅と高さを設定
                rect.Width = 50;
                rect.Height = 50;
    
                // 乱数を使用して色を作成
                Random r = new Random();
                byte alpha = (byte)128;
                byte red = (byte)r.Next(0, 256);
                byte green = (byte)r.Next(0, 256);
                byte blue = (byte)r.Next(0, 256);
    
                // 作成した色で四角形を塗りつぶす
                rect.Fill = new SolidColorBrush(Color.FromArgb(alpha, red, green, blue));
    
                // ★★★タッチされた位置を取得★★★
                var tp = e.GetPosition(Canvas);
                // 四角形を描画する位置をタッチされた位置にする
                rect.RenderTransform = new TranslateTransform(tp.X - rect.Width / 2, tp.Y - rect.Height / 2);
                // 作成した四角形をcanvas1に追加（表示）する
                Canvas.Children.Add(rect);
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2015-01-10T08:55:54.637
4367
2015-01-10T09:16:02.100
2015-01-10T09:10:06.603
724
7284
question
c# wpf
WPFでタッチが認識されません。


マウスイベントの場合ですが、`Background="Transparent"`などと`Canvas`の背景を指定しないと対象になりません。タッチも同様なのではないでしょうか。


CC BY-SA 3.0
2015-01-10T09:16:02.100
4369
2015-01-10T09:16:02.100
5750
4367
answer