| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Media;
- namespace MECF.Framework.UI.Core.DxfScript
- {
- /// <summary>
- /// 名称:画布类
- /// 用途:Canvas信息初始化
- /// </summary>
- public partial class GasDxfDocument
- {
- //显示处理
- //初始化尺寸和位置
- private double canvasWidth, canvasHeight;
- private double rate;//dxf文件与屏幕画布的尺寸比例
- private double DefaultSpace = 5;// 默认边缘空间
- private double XSPACE = 10;
- private double YSPACE = 10;
- public double Scale = 1; //屏幕显示的缩放比例
- public double dragX, dragY; //拖动的偏移量
- //初始化画布
- private void InitScale()
- {
- // 减去两边的空间以确定实际可用画布大小
- canvasWidth = draw.Width - 2 * DefaultSpace;
- canvasHeight = draw.Height - 2 * DefaultSpace;
- // 检查DXF尺寸是否有效
- if (DxfWidth < 1 || DxfHeight < 1) return;
- // 计算宽度和高度的比例
- double widthRate = canvasWidth / DxfWidth;
- double heightRate = canvasHeight / DxfHeight;
- // 选择较小的比例以确保DXF文件完整显示在画布上
- rate = Math.Min(widthRate, heightRate);
- // 计算空间以使图形居中
- XSPACE = DefaultSpace + (canvasWidth - DxfWidth * rate * Scale) / 2;
- YSPACE = DefaultSpace + (canvasHeight - DxfHeight * rate * Scale) / 2;
- }
- //显示移动结果
- public void DrawMovedImage()
- {
- CreateGraphics();
- draw.LoadDrawing(dragX, dragY);
- CloseGraphics();
- }
- public double ScreenToDxfX(double x)
- {
- return (x - XSPACE - dragX) / (rate * Scale);
- }
- public double ScreenToDxfY(double y)
- {
- return DxfHeight - (y - YSPACE - dragY) / (rate * Scale);
- }
- /// <summary>
- /// 纠正拖拽后产生的位移偏差
- /// </summary>
- public void ModifyDrag()
- {
- var scaleTransform = draw.RenderTransform as ScaleTransform;
- if (scaleTransform == null)
- {
- scaleTransform = new ScaleTransform();
- draw.RenderTransform = scaleTransform;
- }
- double backupDragX = dragX;
- double backupDragY = dragY;
- dragX = 0;
- dragY = 0;
- Draw();
- dragX = backupDragX * scaleTransform.ScaleY;
- dragY = backupDragY * scaleTransform.ScaleY;
- DrawMovedImage();
- }
- }
- }
|