流程複雜時畫面無法完整顯示,需拖曳捲軸查看。引入縮放功能可像看圖軟體一樣縮放整個流程圖,掌握全貌。
於 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,但僅調整非關聯狀態下的端點位置;關聯狀態下由活動移動事件驅動規則重繪。