質問編集履歴

4

補足

2021/06/22 02:37

投稿

退会済みユーザー
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

誤字修正

2021/06/22 02:37

投稿

退会済みユーザー
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

進み具合を追記

2021/06/22 01:59

投稿

退会済みユーザー
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

タイトルの修正

2021/06/22 01:56

投稿

退会済みユーザー
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の値