mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-26 11:17:56 +08:00
使用物理尺寸进行设置
This commit is contained in:
@@ -379,7 +379,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
if (_viewModel.IsReadOnly) return;
|
||||
|
||||
Point currentPoint = e.GetPosition(this);
|
||||
_viewModel.CurrentPoint = currentPoint;
|
||||
_viewModel.CurrentPoint = new Point(ScreenHelper.WidthToMm(currentPoint.X), ScreenHelper.WidthToMm(currentPoint.Y));
|
||||
var point = CursorPointManager.GetCursorPosition();
|
||||
_viewModel.CurrentColor = ColorPickerManager.GetColor(point.X, point.Y);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
@@ -27,14 +28,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
Orientation = viewmodel.Orientation;
|
||||
}
|
||||
|
||||
|
||||
[XmlAttribute]
|
||||
[JsonProperty(PropertyName = "ConnectorWidth")]
|
||||
[XmlAttribute("ConnectorWidth")]
|
||||
public double PhysicalConnectorWidth
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
[JsonProperty(PropertyName = "ConnectorHeight")]
|
||||
[XmlAttribute("ConnectorHeight")]
|
||||
public double PhysicalConnectorHeight
|
||||
{
|
||||
get; set;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using AIStudio.Wpf.DiagramDesigner;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -33,13 +34,13 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
this.Reserve = reserve;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
[XmlAttribute("Left")]
|
||||
public double PhysicalLeft
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
[XmlAttribute("Top")]
|
||||
public double PhysicalTop
|
||||
{
|
||||
get; set;
|
||||
@@ -69,13 +70,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
[JsonProperty(PropertyName = "ItemWidth")]
|
||||
[XmlAttribute("ItemWidth")]
|
||||
public double PhysicalItemWidth
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
[JsonProperty(PropertyName = "ItemHeight")]
|
||||
[XmlAttribute("ItemHeight")]
|
||||
public double PhysicalItemHeight
|
||||
{
|
||||
get; set;
|
||||
|
||||
165
AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs
Normal file
165
AIStudio.Wpf.DiagramDesigner/Models/Serializables/DiagramItem.cs
Normal file
@@ -0,0 +1,165 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
using AIStudio.Wpf.DiagramDesigner.Models;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
[Serializable]
|
||||
public class DiagramItem
|
||||
{
|
||||
public DiagramItem()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DiagramItem(IDiagramViewModel diagramView)
|
||||
{
|
||||
Name = diagramView.Name;
|
||||
DiagramType = diagramView.DiagramType;
|
||||
ShowGrid = diagramView.ShowGrid;
|
||||
PhysicalGridCellSize = diagramView.PhysicalGridCellSize;
|
||||
CellHorizontalAlignment = diagramView.CellHorizontalAlignment;
|
||||
CellVerticalAlignment = diagramView.CellVerticalAlignment;
|
||||
PageSizeOrientation = diagramView.PageSizeOrientation;
|
||||
PhysicalPageSize = diagramView.PhysicalPageSize;
|
||||
PageSizeType = diagramView.PageSizeType;
|
||||
PhysicalGridMarginSize = diagramView.PhysicalGridMarginSize;
|
||||
GridColor = diagramView.GridColor;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string Name
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public DiagramType DiagramType
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public bool ShowGrid
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
public Size PhysicalGridCellSize
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlAttribute("GridCellSize")]
|
||||
public string XmlGridCellSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return SerializeHelper.SerializeSize(PhysicalGridCellSize);
|
||||
}
|
||||
set
|
||||
{
|
||||
PhysicalGridCellSize = SerializeHelper.DeserializeSize(value);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public CellHorizontalAlignment CellHorizontalAlignment
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public CellVerticalAlignment CellVerticalAlignment
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public PageSizeOrientation PageSizeOrientation
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
public Size PhysicalPageSize
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlAttribute("PageSize")]
|
||||
public string XmlPageSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return SerializeHelper.SerializeSize(PhysicalPageSize);
|
||||
}
|
||||
set
|
||||
{
|
||||
PhysicalPageSize = SerializeHelper.DeserializeSize(value);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public PageSizeType PageSizeType
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
public Size PhysicalGridMarginSize
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlAttribute("GridMarginSize")]
|
||||
public string XmlGridMarginSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return SerializeHelper.SerializeSize(PhysicalGridMarginSize);
|
||||
}
|
||||
set
|
||||
{
|
||||
PhysicalGridMarginSize = SerializeHelper.DeserializeSize(value);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
public Color GridColor
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlAttribute("GridColor")]
|
||||
public string XmlGridColor
|
||||
{
|
||||
get
|
||||
{
|
||||
return SerializeHelper.SerializeColor(GridColor);
|
||||
}
|
||||
set
|
||||
{
|
||||
GridColor = SerializeHelper.DeserializeColor(value);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlArray]
|
||||
public List<SerializableItem> DesignerItems { get; set; } = new List<SerializableItem>();
|
||||
|
||||
[XmlArray]
|
||||
public List<SerializableItem> Connections { get; set; } = new List<SerializableItem>();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -122,11 +122,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get
|
||||
{
|
||||
return ConnectorWidth * (Root?.ScreenScale ?? 1d);
|
||||
return ScreenHelper.WidthToMm(ConnectorWidth);
|
||||
}
|
||||
set
|
||||
{
|
||||
ConnectorWidth = value / (Root?.ScreenScale ?? 1d);
|
||||
ConnectorWidth = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,11 +134,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get
|
||||
{
|
||||
return ConnectorHeight * (Root?.ScreenScale ?? 1d);
|
||||
return ScreenHelper.WidthToMm(ConnectorHeight);
|
||||
}
|
||||
set
|
||||
{
|
||||
ConnectorHeight = value / (Root?.ScreenScale ?? 1d);
|
||||
ConnectorHeight = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -222,11 +222,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get
|
||||
{
|
||||
return ItemWidth * (Root?.ScreenScale ?? 1d);
|
||||
return ScreenHelper.WidthToMm(ItemWidth);
|
||||
}
|
||||
set
|
||||
{
|
||||
ItemWidth = value / (Root?.ScreenScale ?? 1d);
|
||||
ItemWidth = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,11 +235,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get
|
||||
{
|
||||
return ItemHeight * (Root?.ScreenScale ?? 1d);
|
||||
return ScreenHelper.WidthToMm(ItemHeight);
|
||||
}
|
||||
set
|
||||
{
|
||||
ItemHeight = value / (Root?.ScreenScale ?? 1d);
|
||||
ItemHeight = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -342,11 +342,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get
|
||||
{
|
||||
return Left * (Root?.ScreenScale ?? 1d);
|
||||
return ScreenHelper.WidthToMm(Left);
|
||||
}
|
||||
set
|
||||
{
|
||||
Left = value / (Root?.ScreenScale ?? 1d);
|
||||
Left = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,11 +355,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get
|
||||
{
|
||||
return Top * (Root?.ScreenScale ?? 1d);
|
||||
return ScreenHelper.WidthToMm(Top);
|
||||
}
|
||||
set
|
||||
{
|
||||
Top = value / (Root?.ScreenScale ?? 1d);
|
||||
Top = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,22 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _pageSize, value);
|
||||
if (SetProperty(ref _pageSize, value))
|
||||
{
|
||||
RaisePropertyChanged(nameof(PhysicalPageSize));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Size PhysicalPageSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Size(ScreenHelper.WidthToMm(PageSize.Width), ScreenHelper.WidthToMm(PageSize.Height));
|
||||
}
|
||||
set
|
||||
{
|
||||
PageSize = new Size(ScreenHelper.MmToWidth(value.Width), ScreenHelper.MmToWidth(value.Height));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,6 +217,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
set
|
||||
{
|
||||
_gridCellSize.Width = value;
|
||||
RaisePropertyChanged(nameof(PhysicalGridCellWidth));
|
||||
RaisePropertyChanged(nameof(GridCellSize));
|
||||
}
|
||||
}
|
||||
@@ -214,11 +230,48 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
_gridCellSize.Height = value;
|
||||
_gridCellSize.Height = value;
|
||||
RaisePropertyChanged(nameof(PhysicalGridCellHeight));
|
||||
RaisePropertyChanged(nameof(GridCellSize));
|
||||
}
|
||||
}
|
||||
|
||||
public Size PhysicalGridCellSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Size(ScreenHelper.WidthToMm(GridCellSize.Width), ScreenHelper.WidthToMm(GridCellSize.Height));
|
||||
}
|
||||
set
|
||||
{
|
||||
GridCellSize = new Size(ScreenHelper.MmToWidth(value.Width), ScreenHelper.MmToWidth(value.Height));
|
||||
}
|
||||
}
|
||||
|
||||
public double PhysicalGridCellWidth
|
||||
{
|
||||
get
|
||||
{
|
||||
return ScreenHelper.WidthToMm(GridCellWidth);
|
||||
}
|
||||
set
|
||||
{
|
||||
GridCellWidth = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
public double PhysicalGridCellHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
return ScreenHelper.WidthToMm(GridCellHeight);
|
||||
}
|
||||
set
|
||||
{
|
||||
GridCellHeight = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
private Color _pageBackground = Colors.White;
|
||||
public Color PageBackground
|
||||
{
|
||||
@@ -297,6 +350,42 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
public Size PhysicalGridMarginSize
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Size(ScreenHelper.WidthToMm(GridMarginSize.Width), ScreenHelper.WidthToMm(GridMarginSize.Height));
|
||||
}
|
||||
set
|
||||
{
|
||||
GridMarginSize = new Size(ScreenHelper.MmToWidth(value.Width), ScreenHelper.MmToWidth(value.Height));
|
||||
}
|
||||
}
|
||||
|
||||
public double PhysicalGridMarginWidth
|
||||
{
|
||||
get
|
||||
{
|
||||
return ScreenHelper.WidthToMm(GridMarginWidth);
|
||||
}
|
||||
set
|
||||
{
|
||||
GridMarginWidth = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
public double PhysicalGridMarginHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
return ScreenHelper.WidthToMm(GridMarginHeight);
|
||||
}
|
||||
set
|
||||
{
|
||||
GridMarginHeight = ScreenHelper.MmToWidth(value);
|
||||
}
|
||||
}
|
||||
|
||||
private double _zoomValue = 1;
|
||||
[Browsable(false)]
|
||||
public double ZoomValue
|
||||
@@ -414,11 +503,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
get; set;
|
||||
} = new DiagramOption();
|
||||
|
||||
/// <summary>
|
||||
/// 用于wpf大小与物理像素之间转换
|
||||
/// </summary>
|
||||
public double ScreenScale { get; set; } = 1;
|
||||
|
||||
private double OffsetX = 10;
|
||||
private double OffsetY = 10;
|
||||
#endregion
|
||||
@@ -601,8 +685,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
private DoCommandManager DoCommandManager = new DoCommandManager();
|
||||
public DiagramViewModel()
|
||||
{
|
||||
SetScreenScale();
|
||||
|
||||
CreateNewDiagramCommand = new SimpleCommand(ExecuteEnable, ExecuteCreateNewDiagramCommand);
|
||||
AddItemCommand = new SimpleCommand(ExecuteEnable, ExecuteAddItemCommand);
|
||||
DirectAddItemCommand = new SimpleCommand(ExecuteEnable, ExecuteDirectAddItemCommand);
|
||||
@@ -645,7 +727,21 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
Items.CollectionChanged += Items_CollectionChanged;
|
||||
}
|
||||
|
||||
public bool ExecuteEnable(object para)
|
||||
public DiagramViewModel(DiagramItem diagramItem) :this()
|
||||
{
|
||||
DiagramType = diagramItem.DiagramType;
|
||||
ShowGrid = diagramItem.ShowGrid;
|
||||
PhysicalGridCellSize = diagramItem.PhysicalGridCellSize;
|
||||
CellHorizontalAlignment = diagramItem.CellHorizontalAlignment;
|
||||
CellVerticalAlignment = diagramItem.CellVerticalAlignment;
|
||||
PageSizeOrientation = diagramItem.PageSizeOrientation;
|
||||
PhysicalPageSize = diagramItem.PhysicalPageSize;
|
||||
PageSizeType = diagramItem.PageSizeType;
|
||||
PhysicalGridMarginSize = diagramItem.PhysicalGridMarginSize;
|
||||
GridColor = diagramItem.GridColor;
|
||||
}
|
||||
|
||||
public bool ExecuteEnable(object para)
|
||||
{
|
||||
return IsReadOnly == false;
|
||||
}
|
||||
@@ -1825,13 +1921,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#region 用于wpf大小与物理像素之间转换
|
||||
public void SetScreenScale()
|
||||
{
|
||||
ScreenScale = ScreenHelper.ResetScreenScale();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -203,6 +203,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
Size PhysicalPageSize
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
PageSizeType PageSizeType
|
||||
{
|
||||
get; set;
|
||||
@@ -215,6 +219,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
Size PhysicalGridCellSize
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
PageSizeOrientation PageSizeOrientation
|
||||
{
|
||||
get; set;
|
||||
@@ -231,6 +239,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
Size PhysicalGridMarginSize
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
Color GridColor
|
||||
{
|
||||
get; set;
|
||||
@@ -276,13 +288,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
get; set;
|
||||
}
|
||||
#endregion
|
||||
//用于wpf大小与物理像素之间转换
|
||||
double ScreenScale
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
void SetScreenScale();
|
||||
|
||||
bool ExecuteShortcut(KeyEventArgs e);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user