WPF 實現縮放移動

2021-09-22 10:56:50 字數 2510 閱讀 7725

熟悉wpf 的朋友應該知道canvas 預設是不支援scale 和offset 操作的,如果我們想對canvas 裡包含的控制項進行整體縮放或移動可能會比較麻煩。kael rowan 提供了zoomablecanvas 類可以方便實現上述效果。我們可以在xaml 中直接使用對控制項布局進行開發,而不需要使用。

在專案中加入zoomablecanvas 相關類,編譯後工具欄中會出現zoomablecanvas 控制項。

有了zoomablecanvas 控制項接下來的事情就簡單多了,如下xaml **:

<

window x:

class

xmlns

=""xmlns:x

=""xmlns:my

="clr-namespace:system.windows.controls"

title

="mainwindow"

height

="350"

width

="525">

<

grid

>

<

grid.rowdefinitions

>

<

rowdefinition

height

="auto"/>

<

rowdefinition

height

="auto"/>

<

rowdefinition

/>

grid.rowdefinitions

>

<

stackpanel

orientation

="horizontal"

grid.row

="0">

<

textblock

text

="scale"/>

<

slider

minimum

=".1"

maximum

="4"

width

="200"

value

=""/>

stackpanel

>

<

stackpanel

orientation

="horizontal"

grid.row

="1">

<

textblock

text

="offset"/>

<

slider x:

name

="offsetval"

minimum

="-300"

maximum

="0"

width

="200"

valuechanged

="slider_valuechanged"/>

stackpanel

>

zoomablecanvas x:

name

="zoomcanvas"

grid.row

="2"

offset

="-50,0">

<

button

content

="test"

canvas.top

="10"

canvas.left

="10"/>

<

rectangle

fill

="blue"

canvas.top

="30"

canvas.left

="50"

width

="50"

height

="50"/>

my:zoomablecanvas

>

grid

>

window

>

通過兩個slider 控制canvas 縮放大小與位移距離,zoomablecanvas 的使用和canvas 基本相同,可以在其中加入其他控制項,最後只需要為silder_valuechanged 事件新增好內容即可。

private void slider_valuechanged(object sender, routedpropertychangedeventargs

e)

執行程式,通過滑塊調整zoomablecanvas 的scale 與offset 屬性,快速實現多控制項縮放與移動效果,如下圖對比。

初始狀態(調整前):

調整後:

WPF 實現縮放移動

熟悉wpf 的朋友應該知道canvas 預設是不支援scale 和offset 操作的,如果我們想對canvas 裡包含的控制項進行整體縮放或移動可能會比較麻煩。kael rowan 提供了zoomablecanvas 類可以方便實現上述效果。我們可以在xaml 中直接使用對控制項布局進行開發,而不...

WPF 實現word的縮放效果

原文 wpf 實現word的縮放效果 ms word做出的效果令人十分欣喜,那麼如何用wpf達到這個效果,下面我們來進行討論。disrow 50 slider grid.row 1 horizontalalignment right width 200 margin 10,0,100,0 verti...

unity ugui縮放 移動

乾貨羅列在前,不願意看的,拿東西走人,自己研究 關於ugui的排版方面,剛上手的時候,覺得 哎喲!不錯,這個刁。但是如果你使用過qt等軟體,其實ugui的對齊功能還是很落後的。如果你繼續使用這個排版功能,你就會發現 什麼啊這是,什麼邏輯啊,完全沒懂啊。如何修改ugui控制項到我指定的大小 如何移動u...