WPF開發

WPF主要用在開發介面,WPF的開發上可以運用XAML、C#兩種語言來做開發,最簡單的程式就是畫直線,畫直線有兩種方法:

XAML

<Canvas Height="300" Width="300"> ///Canvas是排版方式,Height、Width設定這塊區域的大小,Canvas內每一個子元件都需要設定位置

<Line ///畫線用語法

X1="10" Y1="60" ///設定線的起點位置

X2="150" Y2="60" ///設定線的終點位置

Stroke="Black" ///設定線的顏色

StrokeThickness="4"/> ///線的粗細程度

</Canvas>

C#

myLine = new Line(); ///建立一個線段的物件

myLine.Stroke = System.Windows.Media.Brushes.LightSteelBlue; ///將線的顏色實心填滿淺藍色(#FFB0C4DE)

myLine.X1 = 1;

myLine.X2 = 50;

myLine.Y1 = 1;

myLine.Y2 = 50; ///設線起點和終點位置

myLine.HorizontalAlignment = HorizontalAlignment.Left; ///水平對齊,向左對齊

myLine.VerticalAlignment = VerticalAlignment.Center; ///垂直對齊,置中

myLine.StrokeThickness = 2; ///線的粗細程度

myGrid.Children.Add(myLine); ///放入myLine物件進myGrid容器,myGrid可以將物件放入同個位置,但有深度上的不同

顯示:

C:\Users\student\Desktop\shape-ovw-line2.gif

用滑鼠拉出直線

C#

using System;///允許空間 using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ///允許空間使用類別 using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;

namespace WpfApplication1///宣告範圍 { /// <summary> /// MainWindow.xaml 的互動邏輯 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent();///初始化組件

}

private void Button_Click(object sender, RoutedEventArgs e)///當Button_Click事件觸發 { Line myLine = new Line(); ///建立一個新的線 myLine.Stroke = System.Windows.Media.Brushes.LightSteelBlue; ///將線的顏色實心填滿淺藍色(#FFB0C4DE) myLine.X1 = 1; ///設定線x軸的起點位置 myLine.X2 = 50; ///設定線x軸的終點位置 myLine.Y1 = 1; ///設定線y軸的起點位置 myLine.Y2 = 50; ///設定線 y軸的終點位置 myLine.HorizontalAlignment = HorizontalAlignment.Left;///置左 myLine.VerticalAlignment = VerticalAlignment.Center;///置中 myLine.StrokeThickness = 20;///設定圖形外框的厚度粗細20 myGrid.Children.Add(myLine); ///放入myLine物件進myGrid容器,myGrid可以將物件放入同個位置,但有深度上的不同

}

Point pos; ///宣告點pos Line currentLine =null; ///設線段為空值

private void mycanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) ///當按下滑鼠左鍵事件發生 { pos = e.GetPosition(mycanvas); ///設點pos為滑鼠游標的位置 }

private void mycanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) ///當放開滑鼠左鍵事件發生 {

currentLine = null; ///設線currentLine為空值

}

private void mycanvas_MouseMove(object sender, MouseEventArgs e) ///當滑鼠移動事件發生 { Point pos2 = e.GetPosition(mycanvas); ///設點pos2為滑鼠游標的位置

bool mouseIsDown = System.Windows.Input.Mouse.LeftButton == MouseButtonState.Pressed; if (mouseIsDown) { if (currentLine == null) ///如果線段currentLine為空值 { currentLine = new Line();///建立一個線名currentLine currentLine.Stroke = System.Windows.Media.Brushes.Red; ///將線的顏色實心填滿為紅色 currentLine.X1 = pos.X; ///設線currentLine起點X值等於pos的X值 currentLine.X2 = pos2.X; ///設線currentLine終點X值等於pos2的X值 currentLine.Y1 = pos.Y; ///設線currentLine起點Y值等於pos的Y值 currentLine.Y2 = pos2.Y; ///設線currentLine終點Y值等於pos2的Y值 currentLine.StrokeThickness = 5; ///設線currentLine的粗細程度為5 mycanvas.Children.Add(currentLine); } else { currentLine.X1 = pos.X; ///設線currentLine起點X值等於pos的X值 currentLine.X2 = pos2.X; ///設線currentLine終點X值等於pos2的X值 currentLine.Y1 = pos.Y; ///設線currentLine起點Y值等於pos的Y值 currentLine.Y2 = pos2.Y; ///設線currentLine終點Y值等於pos2的Y值

} } } } }

Last updated