WPF动态在画布(Canvas)上画一个矩形。

应用背景,现在有一个用WPF定义好的画布,

 <Canvas Name="MapCanvas" Height="{Binding MapTrackCanvasHeight}" Width="{Binding MapTrackCanvasWidth}">
                    
                
 </Canvas>

现在要在这个画布画一个矩形,当然矩形是根据画布大小决定的。

需要引用的文件

using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;

思路:

第一步先读取画布的Width和Height

第二步创建矩形并设置矩形参数

第三步把矩形添加到画布下

上代码解释:

        public void DrawMapTrack()
        {
            var MapTrackCanvasHeight = (Application.Current.MainWindow as MainWindow).MapCanvas.ActualHeight;
            var MapTrackCanvasWidth = (Application.Current.MainWindow as MainWindow).MapCanvas.ActualWidth;
            Rectangle MapTrack = new Rectangle();
            MapTrack.Stroke = new SolidColorBrush(Colors.LightGray);
            MapTrack.Fill = new SolidColorBrush(Colors.LightGray);
            MapTrack.Width = MapTrackCanvasWidth - 60;
            MapTrack.Height = 7;
            var a = MapTrackCanvasHeight / 2;
            Canvas.SetLeft(MapTrack,30);
            Canvas.SetTop(MapTrack, MapTrackCanvasHeight / 2);
            (Application.Current.MainWindow as MainWindow).MapCanvas.Children.Add(MapTrack);
        }

这两行代码是去读WPF的MainWindow中Canvas的Width和Height,其中MapCanvas是XAML中Canvas的Name。

(Application.Current.MainWindow as MainWindow)这一堆是读取MainWindow的变量,XAML中的Name理解成对象,元素理解成变量就好了。

            var MapTrackCanvasHeight = (Application.Current.MainWindow as MainWindow).MapCanvas.ActualHeight;
            var MapTrackCanvasWidth = (Application.Current.MainWindow as MainWindow).MapCanvas.ActualWidth;

下面代码是设置矩阵的意思

第一行是创建一个矩形

第二行和第三行是设置矩形颜色

第四行是设置Width

第五行是设置Height

            Rectangle MapTrack = new Rectangle();
            MapTrack.Stroke = new SolidColorBrush(Colors.LightGray);
            MapTrack.Fill = new SolidColorBrush(Colors.LightGray);
            MapTrack.Width = MapTrackCanvasWidth - 60;
            MapTrack.Height = 7;

 下面代码这两行是设置矩形在画布的位置,不解释了。

            Canvas.SetLeft(MapTrack,30);
            Canvas.SetTop(MapTrack, MapTrackCanvasHeight / 2);

这行代码是把矩形添加到画布中。

(Application.Current.MainWindow as MainWindow).MapCanvas.Children.Add(MapTrack);

 

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波雅_汉库克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值