应用背景,现在有一个用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);