#author("2025-05-16T16:40:48+09:00","default:kyo-in","kyo-in")
#author("2025-05-16T16:41:20+09:00","default:kyo-in","kyo-in")
**基本機能 [#b84a6863]

**クリアボタン [#ldec6b6c]
ストロークを全て消去するクリアボタンを実装する.

ヒント:
MainCanvas.Children.Clearメソッドで,MainCanvasに登録されたShapeを全て削除できる.

#ref(./kadai3_1.gif,50%);

**ストロークの削除 [#je2f8eb2]
右クリックでストロークを1つ削除する.

ヒント:

マウスの右クリックであるかどうかは,PointerPoint.Properties.IsRightButtonPressedで判断できる.

//ただし,これは名前の通り押されていた場合trueになるので,PointerReleaseイベントでは常にfalseである.PointerReleaseイベントで右クリックかどうか判断したい場合はPointerPressedイベントで右クリックだったのか情報を記録しておく必要がある.

実装方法は色々存在するが,例えばPathGeometry.Bounds.Containsメソッドは引数に与えられたPoint型の座標が図形内にあるかどうかboolを返すメソッドである.

MainCanvas.Children.Removeメソッドで引数に指定されたインスタンスをリストから削除できる.

MainCanvasのChildrenに追加されているPathクラスの一覧(リスト)は

 var canvasstrokes = MainCanvas.Children.OfType<Windows.UI.Xaml.Shapes.Path>();

で取得できる.

#ref(./kadai3_3.gif,50%);

**ストロークの太さ変更 [#d76763e5]
UIから描くストロークの太さを変更できるようにする.

ヒント:Shapeクラスの図形もXAMLからUI上に配置し,イベントを持たせることが可能である.

 <Ellipse x:Name="PenColorBlack" Margin="10, 10, 10, 10" Fill="Black" Width="20" Height="20" RelativePanel.Below="PredictModeSwitch" PointerPressed="PenColorBlack_PointerPressed"></Ellipse>
 <Ellipse x:Name="PenColorGreen" Margin="10, 10, 10, 10" Fill="LimeGreen" Width="20" Height="20" RelativePanel.Below="PredictModeSwitch" RelativePanel.RightOf="PenColorBlack" PointerPressed="PenColorGreen_PointerPressed"></Ellipse>

#ref(./strokethickness.gif);
#ref(./strokethickness.gif,50%);

**課題提出方法 [#r54a0cd6]
招待されているBoxアップロードフォルダ「情報メディア基礎ゼミ(森谷)」へ,完成させた課題のソリューションフォルダをZIP圧縮し,ファイルを以下の名前でアップロードしてください.

ファイル名:XXFIXXX_3rd.zip(例:18FI999_3rd.zip)

''提出締め切り:5月23日(金) 23:59''

BOXアップロードフォルダの招待メールが来ていない方は森谷までメール連絡ください.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS