■実現したい事
・InkCanvasにてユーザが描いた内容をPointCollectionにて座標情報で保持したい。
・そのため、MouseLeftButtonDown、MouseMove、MouseLeftButtonUpにて座標情報を取得しつつ、
それぞれのタイミングで個別の処理を実装したい。
■困っていること
MouseMove、MouseLeftButtonUpが動くことは以下ソースで確認できましたが、
なぜかMouseLeftButtonDownが動きません。
※検索するとBackgroundプロパティを指定しないと動かないという情報を見つけましたが、
下記のソースのとおりBackground="Transparent" と指定しております。
XAML
1<Window x:Class="DragCanvasPaint.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:Ink="clr-namespace:System.Windows.Ink;assembly=PresentationCore" 5 Title="Hello, InkCanvas!" Height="472" Width="708" 6 > 7 <Grid> 8 <Viewbox Name="viewbox" Height="472" Width="708" Stretch="Uniform" > 9 <InkCanvas Name="canvas" HorizontalAlignment="Stretch" Height="472" Width="708" VerticalAlignment="Stretch" Background="Transparent" MouseLeftButtonDown="canvas_MouseLeftButtonDown" MouseLeftButtonUp="canvas_MouseLeftButtonUp" MouseMove="canvas_MouseMove"/> 10 </Viewbox> 11 </Grid> 12</Window>
C#
1namespace DragCanvasPaint 2{ 3 /// <summary> 4 /// MainWindow.xaml の相互作用ロジック 5 /// </summary> 6 public partial class MainWindow : Window 7 { 8 public MainWindow() 9 { 10 InitializeComponent(); 11 } 12 13 private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 14 { 15 Console.WriteLine("_MouseLeftButtonDown"); 16 } 17 18 private void canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 19 { 20 Console.WriteLine("MouseLeftButtonUp"); 21 } 22 23 private void canvas_MouseMove(object sender, MouseEventArgs e) 24 { 25 Console.WriteLine("MouseMove"); 26 } 27 28 } 29}
InkCanvasではMouseLeftButtonDownに対応していないのでしょうか?
その場合、MouseLeftButtonDownに代わるクリックした直後に処理を行う方法はございますでしょうか?
また、今回はInkCanvasの利用について検討しておりますので、
「InkCanvasではなくCanvasを利用すればいい」というご回答は無しでお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/13 03:02
2018/10/15 14:55
2018/10/15 15:11
2018/10/15 15:19