質問編集履歴
4
補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -374,6 +374,26 @@
|
|
374
374
|
|
375
375
|
|
376
376
|
|
377
|
+
・そもそも、移動機能は必要なのか…
|
378
|
+
|
379
|
+
WPF Canvasにマウスで図形を描画する方法
|
380
|
+
|
381
|
+
[https://hyperts.net/wpf-drawcanvas-mouse/](https://hyperts.net/wpf-drawcanvas-mouse/)
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
Imageの上に、ユーザーがドラッグで四角形を描く。
|
386
|
+
|
387
|
+
そして、その四角形の場所、サイズなどを保存したいと思っていました。
|
388
|
+
|
389
|
+
描いた四角形の移動や拡縮は、四角形を描いた後の話であり
|
390
|
+
|
391
|
+
先に上記サイトのCanvasにRectangleを描く方を実施しようと思います。
|
392
|
+
|
393
|
+
そのRectangleを移動および拡縮できるように検討したいと思います。
|
394
|
+
|
395
|
+
|
396
|
+
|
377
397
|
とりあえず、TN8001様に教えて頂いた「ラバーバンド」というものを
|
378
398
|
|
379
399
|
調べてみようと思います。
|
3
誤字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -374,7 +374,7 @@
|
|
374
374
|
|
375
375
|
|
376
376
|
|
377
|
-
とりあえず、TN8001様に教えて頂いた「ラバー
|
377
|
+
とりあえず、TN8001様に教えて頂いた「ラバーバンド」というものを
|
378
378
|
|
379
379
|
調べてみようと思います。
|
380
380
|
|
2
進み具合を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -278,6 +278,106 @@
|
|
278
278
|
|
279
279
|
|
280
280
|
|
281
|
+
### 試したこと 6/22 10:28
|
282
|
+
|
283
|
+
色々と検証を重ね、
|
284
|
+
|
285
|
+
いい方法とは思えませんが、
|
286
|
+
|
287
|
+
RectangleCreateにて、Rectangleを削除し作り直すようにしました。
|
288
|
+
|
289
|
+
(Eventのものは削除しました。
|
290
|
+
|
291
|
+
```C#
|
292
|
+
|
293
|
+
RectangleCreate(){
|
294
|
+
|
295
|
+
var type = typeof(Brushes);
|
296
|
+
|
297
|
+
Rectangle Rectan = new Rectangle();//Rectangle新規作成
|
298
|
+
|
299
|
+
Rectan.Name = "Rectan";//Rectanという名前にする
|
300
|
+
|
301
|
+
Rectan.Width = Width;
|
302
|
+
|
303
|
+
Rectan.Height = Height;
|
304
|
+
|
305
|
+
Canvas.SetTop(Rectan,Y);
|
306
|
+
|
307
|
+
Canvas.SetLeft(Rectan,X);
|
308
|
+
|
309
|
+
Rectan.Fill = Brushes.Transparent;//サンプルとして透明固定
|
310
|
+
|
311
|
+
Rectan.Stroke = Brushes.Red;//サンプルとして赤固定
|
312
|
+
|
313
|
+
Rectan.StrokeThickness = 2;//サンプルとして2固定
|
314
|
+
|
315
|
+
Rectan.MouseLeftButtonDown += Rect_MouseLeftButtonDown;
|
316
|
+
|
317
|
+
Rectan.MouseEnter += Rect_MouseEnter;
|
318
|
+
|
319
|
+
Rectan.MouseLeave += Rect_Leave;
|
320
|
+
|
321
|
+
Rectan.MouseLeftButtonUp += Rect_MouseLeftButtonUp;
|
322
|
+
|
323
|
+
Rectan.MouseMove += Rect_MouseMove;
|
324
|
+
|
325
|
+
MyCanvas.Children.Add(Rectan);
|
326
|
+
|
327
|
+
}
|
328
|
+
|
329
|
+
```
|
330
|
+
|
331
|
+
また、以下のようにしたら、正しい位置に表示されるようになった気がします。
|
332
|
+
|
333
|
+
正しいかどうかは不明ですが、見た感じ問題ないような気がします。
|
334
|
+
|
335
|
+
```
|
336
|
+
|
337
|
+
X = Canvas.GetLeft(TEST) + TEST.RenderTransform.Value.OffsetX; //OffsetX
|
338
|
+
|
339
|
+
Y = Canvas.GetTop(TEST) + TEST.RenderTransform.Value.OffsetY;//OffsetY
|
340
|
+
|
341
|
+
Width = X + TEST.RenderSize.Width;//幅
|
342
|
+
|
343
|
+
Height = Y + TEST.RenderSize.Height;//高さ
|
344
|
+
|
345
|
+
```
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
今2点気になっていることがあります。
|
350
|
+
|
351
|
+
**・Rectangleを消したいが、名前で指定出来ない**
|
352
|
+
|
353
|
+
「Rectan」を削除し、作成し直すという手を使おうとしてますが
|
354
|
+
|
355
|
+
NameでRectangleを検索できずNullになってしまうため、
|
356
|
+
|
357
|
+
Rectangleを動かせば動かすほど出来てしまいます。
|
358
|
+
|
359
|
+
var NG1=FindName("Rectan");
|
360
|
+
|
361
|
+
var NG2 = this.FindName("Rectan") as Rectangle;
|
362
|
+
|
363
|
+
Rectangle NG3 = (Rectangle)this.MyCanvas.FindName("Rectan");
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
**・マウス左クリックを外していないのに、勝手にRectangleから外れる**
|
370
|
+
|
371
|
+
マウスの動きが速かったり、Rectangleが小さいと
|
372
|
+
|
373
|
+
クリックしたままでも勝手にドラッグ判定から外れてしまいます。
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
とりあえず、TN8001様に教えて頂いた「ラバーランド」というものを
|
378
|
+
|
379
|
+
調べてみようと思います。
|
380
|
+
|
281
381
|
|
282
382
|
|
283
383
|
### 補足情報(FW/ツールのバージョンなど)
|
1
タイトルの修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Rectangle移動後の座標を取得したい
|
1
|
+
【WPF】C# Rectangle移動後の座標を取得したい
|
test
CHANGED
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
たくさんあるのですが、手詰まり状態で困っています。
|
8
8
|
|
9
|
+
3日調べましたが、いい方法は見つかりませんでした。
|
10
|
+
|
9
11
|
|
10
12
|
|
11
13
|
・Rectangle移動後の座標、Canvasの左上を基準としたTop,Leftの値
|