##実現したいこと
以下の機能を加えたペイントツールを作成したい
####実現済み(最適かは不明)
・背景を透明にする
(現在は色を付けている)
・マウスのボタンが離された時に描かれた線を消す
####未実装
#####・バックグラウンドでペイントをし続ける※最重要
・マウスの入力されているボタンにより色を変える
(できている気はするが微妙)
・マウスボタンを押さなくても線が描ける
・描画開始位置を中心で固定する
・マウスボタンの入出力があるたびに中心に戻る
(現在線を消せているので初期位置の設定ができればなんとかなりそう??)
現在のコードは以下の通りです。
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Text.RegularExpressions; 6using System.Threading.Tasks; 7using System.Windows; 8using System.Windows.Controls; 9using System.Windows.Data; 10using System.Windows.Documents; 11using System.Windows.Ink; 12using System.Windows.Input; 13using System.Windows.Media; 14using System.Windows.Media.Imaging; 15using System.Windows.Navigation; 16using System.Windows.Shapes; 17 18namespace test 19{ 20 /// <summary> 21 /// MainWindow.xaml の相互作用ロジック 22 /// </summary> 23 public partial class MainWindow : Window 24 { 25 public bool Capture { get; private set; } 26 27 public MainWindow() 28 { 29 InitializeComponent(); 30 31 WindowStartupLocation = WindowStartupLocation.CenterScreen; 32 canvas.MouseMove += move; 33 canvas.MouseLeftButtonDown += down; 34 canvas.MouseLeftButtonUp += up; 35 } 36 private DrawingAttributes ink = new DrawingAttributes(); 37 38 private void load(object sender, RoutedEventArgs e) 39 { 40 ink.Width = 10; 41 ink.Height = 10; 42 Color myColor = (Color)ColorConverter.ConvertFromString("#aaFFFFFF"); 43 44 ink.Color = myColor; 45 46 canvas.DefaultDrawingAttributes = ink; 47 _ = Mouse.Capture(this); 48 } 49 50 private void up(object sender, MouseButtonEventArgs e) 51 { 52 canvas.Strokes.Clear(); 53 } 54 55 private void down(object sender, MouseButtonEventArgs e) 56 { 57 changeColor(e); 58 } 59 60 private void move(object sender, MouseEventArgs e) 61 { 62 changeColor(e); 63 } 64 private void changeColor( MouseEventArgs e) 65 { 66 if(e.LeftButton == MouseButtonState.Pressed) 67 { 68 Color myColor = new Color(); 69 myColor = (Color)ColorConverter.ConvertFromString("#aaFF0000"); 70 ink.Color = myColor; 71 72 canvas.DefaultDrawingAttributes = ink; 73 } 74 else 75 { 76 Color myColor = new Color(); 77 myColor = (Color)ColorConverter.ConvertFromString("#aaFFFFFF"); 78 ink.Color = myColor; 79 80 canvas.DefaultDrawingAttributes = ink; 81 } 82 } 83 84 private void right_down(object sender, MouseButtonEventArgs e) 85 { 86 } 87 } 88} 89
xaml
1<Window x:Class="test.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:test" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="600" Width="800" Background="Transparent" AllowsTransparency="True" WindowStyle="None" Loaded="load" > 9 <Grid> 10 <InkCanvas Name="canvas" Height="600" Width="800" Background="#0F00FF00" MouseLeftButtonUp="up" PreviewMouseLeftButtonDown="down" MouseMove="move" MouseRightButtonDown="right_down"/> 11 </Grid> 12</Window> 13
以上です。
ご回答お待ちしてます。
あなたの回答
tips
プレビュー