WPF 在image控制項用滑鼠拖拽出矩形

2021-09-07 20:49:18 字數 3998 閱讀 9894

原文:

wpf 在image控制項用滑鼠拖拽出矩形

今天有小夥伴問我乙個問題,在image控制項用滑鼠拖拽出矩形,本文告訴大家如何使用滑鼠畫出矩形

做出來的效果先請大家看一下

最簡單的方法是在 down 的時候記錄按下的點,在 移動的時候重新計算所在的寬度

先在介面使用乙個和乙個矩形

<

grid x:name=

"grid"

>

<

image source=

"tim截圖20180811150831.png"

>

<

/image>

<

textblock horizontalalignment=

"center" verticalalignment=

"center"

<

/textblock>

<

rectangle x:name=

"rectangle" strokethickness=

"2" stroke=

"black" horizontalalignment=

"left" verticalalignment=

"top"

>

<

/rectangle>

<

/grid>

需要注意,的位置需要修改為自己需要的

這裡的rectangle需要做一些設定,主要horizontalalignmentverticalalignment必須設定為左上角

現在開啟 cs **,在按下和移動修改矩形

mousedown +

= mainwindow_mousedown;

mousemove +

= mainwindow_mousemove;

mouseup +

= mainwindow_mouseup;

需要兩個欄位來記錄當前是否按下和第一次按下所在的座標

剛才給grid的命名就是為了拿到相對 grid 的座標

private

void

mainwindow_mousedown

(object sender,

mousebuttoneventargs e)

private

bool _started;

private

point _downpoint;

在滑鼠按下時拿到按下的座標,通過這個座標就可以計算出矩形所在的位置

private

void

mainwindow_mouseup

(object sender,

mousebuttoneventargs e)

private

void

mainwindow_mousemove

(object sender,

mouseeventargs e)

}

**就是這麼簡單,通過修改margin的方法修改矩形

如果對於高手,我建議使用rendertransform的方式而不是使用margin這裡使用這個方法只是看起來簡單

因為效能最差 canvas.setleft canvas.settop,效能中等 margin,效能最好 rendertransform 當然使用 rendertransform 的方法沒有使用 margin 那樣容易了解

今天有小夥伴問我乙個問題,在image控制項用滑鼠拖拽出矩形,本文告訴大家如何使用滑鼠畫出矩形

做出來的效果先請大家看一下

最簡單的方法是在 down 的時候記錄按下的點,在 移動的時候重新計算所在的寬度

先在介面使用乙個和乙個矩形

<

grid x:name=

"grid"

>

<

image source=

"tim截圖20180811150831.png"

>

<

/image>

<

textblock horizontalalignment=

"center" verticalalignment=

"center"

<

/textblock>

<

rectangle x:name=

"rectangle" strokethickness=

"2" stroke=

"black" horizontalalignment=

"left" verticalalignment=

"top"

>

<

/rectangle>

<

/grid>

需要注意,的位置需要修改為自己需要的

這裡的rectangle需要做一些設定,主要horizontalalignmentverticalalignment必須設定為左上角

現在開啟 cs **,在按下和移動修改矩形

mousedown +

= mainwindow_mousedown;

mousemove +

= mainwindow_mousemove;

mouseup +

= mainwindow_mouseup;

需要兩個欄位來記錄當前是否按下和第一次按下所在的座標

剛才給grid的命名就是為了拿到相對 grid 的座標

private

void

mainwindow_mousedown

(object sender,

mousebuttoneventargs e)

private

bool _started;

private

point _downpoint;

在滑鼠按下時拿到按下的座標,通過這個座標就可以計算出矩形所在的位置

private

void

mainwindow_mouseup

(object sender,

mousebuttoneventargs e)

private

void

mainwindow_mousemove

(object sender,

mouseeventargs e)

}

**就是這麼簡單,通過修改margin的方法修改矩形

如果對於高手,我建議使用rendertransform的方式而不是使用margin這裡使用這個方法只是看起來簡單

因為效能最差 canvas.setleft canvas.settop,效能中等 margin,效能最好 rendertransform 當然使用 rendertransform 的方法沒有使用 margin 那樣容易了解

WPF 在image控制項用滑鼠拖拽出矩形

做出來的效果先請大家看一下 最簡單的方法是在 down 的時候記錄按下的點,在 移動的時候重新計算所在的寬度 先在介面使用乙個和乙個矩形 grid x name grid image source tim截圖20180811150831.png image textblock horizontala...

WPF 在image控制項用滑鼠拖拽出矩形

做出來的效果先請大家看一下 最簡單的方法是在 down 的時候記錄按下的點,在 移動的時候重新計算所在的寬度 先在介面使用乙個和乙個矩形 grid x name grid image source tim截圖20180811150831.png image textblock horizontala...

用WPF做報表控制項(一)

datagrid是wpf自帶的報表控制項,但其功能簡單,很多時候無法滿足我們的需求。第三方庫 如devexpress 報表功能強大,但一方面資源消耗比較多,另一方面效能也較差,在一些比較差的電腦上執行很吃力。我之前就嘗試過在工控機上使用devexpress,每次啟動都需要等幾秒甚至十幾秒半分鐘,體驗...