程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 使用silverlight構建一個工作流設計器(十五)(縮放流程圖)

使用silverlight構建一個工作流設計器(十五)(縮放流程圖)

編輯:關於ASP.NET

當流程過於復雜,流程環節過多時,在一個屏幕中不能完全顯示整個流程圖,需要拖拽滾動條來顯示。這對於了解整個流程的概況有些不便,聯想到一些看圖軟件的縮放功能,如果可以給流程增加縮放,那麼就可以很好的解決流程圖過於復雜而不便查看的問題了。

十、增加流程圖縮放功能

流程縮放要考慮活動和規則的縮放,對於活動和規則,他們的縮放方式稍有不同。

對於活動,縮放會影響兩個地方,一個是活動的位置,也就是相對於容器的Top和Left屬性。另一個是活動本身的圖形的大小。

對於規則,縮放只會影響到規則的位置。如果規則關聯到活動,那麼規則的位置不進行縮放計算,而是跟隨關聯的活動進行位置的改變。

首先要給IElement接口增加一個縮放方法,void Zoom(double zoomDeep),這個方法中的參數zoomDeep說明了縮放的比例。下面分別在活動和規則中實現這個方法。

10.1 活動縮放

上面講到了,活動的縮放影響到兩個方面,一個是活動的位置,一個是活動的大小。對於給定的縮放比例大小(zoomDeep),只需要將這個zoomDeep應用到位置和大小即可。但有一點非常重要的是,縮放指的是對原圖進行的縮放,因此需要記錄一下活動的原始大小,以及原始位置(每位位置發生變動,例如活動被拖拽時,重新記錄一下位置信息)。

使用下面的方法對活動進行縮放處理

//圖片原始寬

double origPictureWidth = 0;

//圖片原始高

double origPictureHeight = 0;

//圖片原始位置

Point origPosition;

//位置是否發生改變

boopositionIsChange = true;
public void Zoom(double zoomDeep)
{
if (origPictureWidth == 0)
{
origPictureWidth = sdPicture.PictureWidth;
origPictureHeight = sdPicture.PictureHeight;
}
if (positionIsChange)
{
origPosition = this.Position;
positionIsChange = false;
}
sdPicture.PictureHeight = origPictureHeight * zoomDeep;
sdPicture.PictureWidth = origPictureWidth * zoomDeep;
this.Position = new Point(origPosition.X * zoomDeep, origPosition.Y * zoomDeep);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved