首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

使用 Silverlight 建構工作流設計器(十五):流程圖縮放功能實作

     編輯:關於ASP.NET

需求動機

流程複雜時畫面無法完整顯示,需拖曳捲軸查看。引入縮放功能可像看圖軟體一樣縮放整個流程圖,掌握全貌。

縮放設計考量

  • 活動:位置與圖形大小皆需縮放。
  • 規則:僅縮放位置;若已關聯活動,則跟隨活動移動,不另行計算。

介面擴充

於 IElement 介面新增方法:

void Zoom(double zoomDeep); // zoomDeep 為縮放比例

活動縮放實作

記錄原始尺寸與位置,縮放時套用比例:

double origPictureWidth = 0;
double origPictureHeight = 0;
Point origPosition;
bool positionIsChange = 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);
}

關鍵點:活動被拖曳時需重設 positionIsChange = true,以更新原始位置基準。

規則縮放

規則類別同樣實作 Zoom,但僅調整非關聯狀態下的端點位置;關聯狀態下由活動移動事件驅動規則重繪。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved