回答編集履歴
1
Arrayに変更
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
抽出結果が複数あるので、
|
1
|
+
抽出結果が複数あるので、描画するだけです
|
2
2
|
|
3
3
|
ただ、このコードだとマウス座標が変わる度に
|
4
4
|
|
@@ -38,9 +38,9 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
-
// 赤枠になっている四角形の座標
|
41
|
+
// 赤枠になっている四角形の座標配列
|
42
42
|
|
43
|
-
|
43
|
+
Rectangle[] _prev = new Rectangle[0];
|
44
44
|
|
45
45
|
|
46
46
|
|
@@ -72,9 +72,9 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
//
|
75
|
+
// 400個の四角形を作成
|
76
76
|
|
77
|
-
for (int i = 0; i <
|
77
|
+
for (int i = 0; i < 400; i++)
|
78
78
|
|
79
79
|
{
|
80
80
|
|
@@ -114,53 +114,47 @@
|
|
114
114
|
|
115
115
|
// カーソル座標にある四角形を全て抽出
|
116
116
|
|
117
|
-
|
117
|
+
Rectangle[] hitRects = _rects.AsEnumerable()
|
118
118
|
|
119
|
-
.Where(v =>
|
119
|
+
.Where(v =>
|
120
120
|
|
121
|
-
v.X <= e.X && v.Y <= e.Y &&
|
121
|
+
v.X <= e.X && v.Y <= e.Y &&
|
122
122
|
|
123
123
|
(v.X + v.Width) >= e.X && (v.Y + v.Height) >= e.Y)
|
124
124
|
|
125
125
|
.Select(v => v)
|
126
126
|
|
127
|
-
.To
|
127
|
+
.ToArray();
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
-
// 抽出結果が1個以上あれば描画開始
|
132
|
-
|
133
|
-
i
|
131
|
+
using (Graphics g = Graphics.FromImage(pictureBox1.Image))
|
134
132
|
|
135
133
|
{
|
136
134
|
|
135
|
+
// 前回描画した赤枠を青枠に戻す
|
136
|
+
|
137
|
-
|
137
|
+
if (_prev.Length > 0)
|
138
138
|
|
139
139
|
{
|
140
140
|
|
141
|
-
i
|
141
|
+
using (Pen pen = new Pen(Color.Blue))
|
142
142
|
|
143
143
|
{
|
144
144
|
|
145
|
-
using (Pen pen = new Pen(Color.Blue))
|
146
|
-
|
147
|
-
{
|
148
|
-
|
149
|
-
// 前回描画した赤枠を青枠に戻す
|
150
|
-
|
151
|
-
foreach (Rectangle r in _prev)
|
152
|
-
|
153
|
-
{
|
154
|
-
|
155
|
-
|
145
|
+
g.DrawRectangles(pen, _prev);
|
156
|
-
|
157
|
-
}
|
158
|
-
|
159
|
-
}
|
160
146
|
|
161
147
|
}
|
162
148
|
|
149
|
+
}
|
163
150
|
|
151
|
+
|
152
|
+
|
153
|
+
// 抽出結果が1個以上あれば描画開始
|
154
|
+
|
155
|
+
if (hitRects.Length > 0)
|
156
|
+
|
157
|
+
{
|
164
158
|
|
165
159
|
using (Pen pen = new Pen(Color.Red))
|
166
160
|
|
@@ -168,13 +162,7 @@
|
|
168
162
|
|
169
163
|
// 赤枠四角描画
|
170
164
|
|
171
|
-
foreach (Rectangle r in hitRects)
|
172
|
-
|
173
|
-
{
|
174
|
-
|
175
|
-
|
165
|
+
g.DrawRectangles(pen, hitRects);
|
176
|
-
|
177
|
-
}
|
178
166
|
|
179
167
|
}
|
180
168
|
|