teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/04/19 22:54

投稿

YT0014
YT0014

スコア1819

answer CHANGED
@@ -1,4 +1,15 @@
1
1
  残念ながら、現在のコードは、データ構造がベクタなのに、上書きで消去するというラスタでのみ有効な機能を実装するという、設計ミスの為、簡単な変更では修正できません。
2
2
 
3
3
  まずは、ラスタとベクタに関して、学んでください。
4
- [ラスタとベクタ](http://www.myu.ac.jp/~makanae/CG/cg1_2.htm)
4
+ [ラスタとベクタ](http://www.myu.ac.jp/~makanae/CG/cg1_2.htm)
5
+
6
+ 追記
7
+ ベクタのまま修正する場合の修正方法です。
8
+
9
+ 現状のデータは、黒線をペン、白線を消しゴムとして扱い、全ての黒線を描画した後、全ての白線を描画しています。
10
+ これを、黒線も白線もペンとして扱い、配列も分けずにまとめます。(ただし、別途、色を保持する配列も必要)
11
+ 描画も、黒線、白線、黒線と書かれたのならば、そのまま、黒線、白線、黒線の順番に描画します。
12
+
13
+ この修正で、画面上は正しい絵になりますが、本来意図していた消去という概念からは遠ざかります。
14
+
15
+ その為、描画済みの線を選択できるようにし、選択した線を削除できるようにするのが、一般的な実装になります。