实际尺寸之间转换

This commit is contained in:
艾竹
2023-02-11 22:20:24 +08:00
parent 86082cb788
commit 59bfed341d
14 changed files with 487 additions and 265 deletions

View File

@@ -53,10 +53,9 @@ namespace AIStudio.Wpf.DiagramDesigner
if (designerbase is ConnectorInfoItemBase designer)
{
ConnectorWidth = designer.ConnectorWidth;
ConnectorHeight = designer.ConnectorHeight;
PhysicalConnectorWidth = designer.PhysicalConnectorWidth;
PhysicalConnectorHeight = designer.PhysicalConnectorHeight;
Orientation = designer.Orientation;
ConnectorValue = designer.ConnectorValue;
}
}
@@ -87,44 +86,61 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private double connectorWidth = 8;
private double _connectorWidth = 8;
public double ConnectorWidth
{
get
{
return connectorWidth;
return _connectorWidth;
}
set
{
connectorWidth = value;
if (SetProperty(ref _connectorWidth, value))
{
RaisePropertyChanged(nameof(PhysicalConnectorWidth));
}
}
}
private double connectorHeight = 8;
private double _connectorHeight = 8;
public double ConnectorHeight
{
get
{
return connectorHeight;
return _connectorHeight;
}
set
{
connectorHeight = value;
if (SetProperty(ref _connectorHeight, value))
{
RaisePropertyChanged(nameof(PhysicalConnectorHeight));
}
}
}
public double _connectorValue;
public double ConnectorValue
public double PhysicalConnectorWidth
{
get
{
return _connectorValue;
return ConnectorWidth * (Root?.ScreenScale ?? 1d);
}
set
{
SetProperty(ref _connectorValue, value);
ConnectorWidth = value / (Root?.ScreenScale ?? 1d);
}
}
public double PhysicalConnectorHeight
{
get
{
return ConnectorHeight * (Root?.ScreenScale ?? 1d);
}
set
{
ConnectorHeight = value / (Root?.ScreenScale ?? 1d);
}
}
#endregion
}
}

View File

@@ -36,10 +36,24 @@ namespace AIStudio.Wpf.DiagramDesigner
if (designerbase is LogicalConnectorInfoItem designer)
{
ConnectorValue = designer.ConnectorValue;
ValueTypePoint = designer.ValueTypePoint;
}
}
public double _connectorValue;
public double ConnectorValue
{
get
{
return _connectorValue;
}
set
{
SetProperty(ref _connectorValue, value);
}
}
public ValueTypePoint _valueTypePoint;
public ValueTypePoint ValueTypePoint
{

View File

@@ -51,13 +51,13 @@ namespace AIStudio.Wpf.DiagramDesigner
if (designerbase is DesignerItemBase designer)
{
this.Left = designer.Left;
this.Top = designer.Top;
this.PhysicalLeft = designer.PhysicalLeft;
this.PhysicalTop = designer.PhysicalTop;
this.Angle = designer.Angle;
this.ScaleX = designer.ScaleX;
this.ScaleY = designer.ScaleY;
this.ItemWidth = designer.ItemWidth;
this.ItemHeight = designer.ItemHeight;
this.PhysicalItemWidth = designer.PhysicalItemWidth;
this.PhysicalItemHeight = designer.PhysicalItemHeight;
this.Icon = designer.Icon;
}
}
@@ -191,12 +191,10 @@ namespace AIStudio.Wpf.DiagramDesigner
set
{
if (value <= 0) return;
if (this is GroupDesignerItemViewModel && value < 70)
if (SetProperty(ref _itemWidth, value))
{
RaisePropertyChanged(nameof(PhysicalItemWidth));
}
SetProperty(ref _itemWidth, value);
}
}
@@ -212,7 +210,36 @@ namespace AIStudio.Wpf.DiagramDesigner
set
{
if (value <= 0) return;
SetProperty(ref _itemHeight, value);
if (SetProperty(ref _itemHeight, value))
{
RaisePropertyChanged(nameof(PhysicalItemHeight));
}
}
}
[Browsable(true)]
public double PhysicalItemWidth
{
get
{
return ItemWidth * (Root?.ScreenScale ?? 1d);
}
set
{
ItemWidth = value / (Root?.ScreenScale ?? 1d);
}
}
[Browsable(true)]
public double PhysicalItemHeight
{
get
{
return ItemHeight * (Root?.ScreenScale ?? 1d);
}
set
{
ItemHeight = value / (Root?.ScreenScale ?? 1d);
}
}
@@ -310,6 +337,32 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
[Browsable(true)]
public double PhysicalLeft
{
get
{
return Left * (Root?.ScreenScale ?? 1d);
}
set
{
Left = value / (Root?.ScreenScale ?? 1d);
}
}
[Browsable(true)]
public double PhysicalTop
{
get
{
return Top * (Root?.ScreenScale ?? 1d);
}
set
{
Top = value / (Root?.ScreenScale ?? 1d);
}
}
public PointBase Position
{
get

View File

@@ -112,38 +112,40 @@ namespace AIStudio.Wpf.DiagramDesigner
public Size GetPageSize()
{
Size size = _pageSize;
switch (PageSizeType)
{
case PageSizeType.Letter: return new Size(612, 792);
case PageSizeType.Folio: return new Size(612, 936);
case PageSizeType.Legal: return new Size(612, 1008);
case PageSizeType.Executive: return new Size(522, 756);
case PageSizeType.Statement: return new Size(396, 612);
case PageSizeType.Envelope: return new Size(297, 684);
case PageSizeType.MonarchEnvelope: return new Size(279, 540);
case PageSizeType.Tabloid: return new Size(792, 1224);
case PageSizeType.LetterSmall: return new Size(612, 792);
case PageSizeType.CSheet: return new Size(1224, 1584);
case PageSizeType.DSheet: return new Size(1584, 2448);
case PageSizeType.ESheet: return new Size(2448, 3168);
case PageSizeType.A3: return new Size(842, 1191);
case PageSizeType.A4: return new Size(595, 842);
case PageSizeType.A5: return new Size(420, 595);
case PageSizeType.B4: return new Size(709, 1003);
case PageSizeType.B5: return new Size(516, 729);
case PageSizeType.DLEnvelope: return new Size(312, 624);
case PageSizeType.C5Envelope: return new Size(459, 649);
case PageSizeType.Quarto: return new Size(609, 780);
case PageSizeType.C6Quarto: return new Size(323, 459);
case PageSizeType.B5Quarto: return new Size(499, 709);
case PageSizeType.ItalyQuarto: return new Size(312, 652);
case PageSizeType.A4small: return new Size(595, 842);
case PageSizeType.GermanStdFanfold: return new Size(612, 864);
case PageSizeType.GermanLegalFanfold: return new Size(576, 936);
case PageSizeType.PRC16K: return new Size(414, 609);
case PageSizeType.PRC32K: return new Size(275, 428);
default: return _pageSize;
{
case PageSizeType.A3: size = new Size(297, 420); break;
case PageSizeType.A4: size = new Size(210, 297); break;
case PageSizeType.A5: size = new Size(148, 210); break;
case PageSizeType.B4: size = new Size(257, 364); break;
case PageSizeType.B5: size = new Size(176, 250); break;
case PageSizeType.DLEnvelope: size = new Size(110, 220); break;
case PageSizeType.C5Envelope: size = new Size(162, 229); break;
case PageSizeType.Quarto: size = new Size(215, 275); break;
case PageSizeType.C6Quarto: size = new Size(114, 162); break;
case PageSizeType.B5Quarto: size = new Size(176, 250); break;
case PageSizeType.ItalyQuarto: size = new Size(110, 230); break;
case PageSizeType.A4small: size = new Size(210, 297); break;
case PageSizeType.GermanStdFanfold: size = new Size(215.9, 304.8); break;
case PageSizeType.GermanLegalFanfold: size = new Size(203.2, 330.2); break;
case PageSizeType.PRC16K: size = new Size(146, 215); break;
case PageSizeType.PRC32K: size = new Size(97, 151); break;
case PageSizeType.Letter: size = new Size(215.9, 279.4); break;
case PageSizeType.Folio: size = new Size(215.9, 330.2); break;
case PageSizeType.Legal: size = new Size(215.9, 355.6); break;
case PageSizeType.Executive: size = new Size(184.15, 266.7); break;
case PageSizeType.Statement: size = new Size(139.7, 215.9); break;
case PageSizeType.Envelope: size = new Size(104.77, 241.3); break;
case PageSizeType.MonarchEnvelope: size = new Size(98.425, 190.5); break;
case PageSizeType.Tabloid: size = new Size(279.4, 431.8); break;
case PageSizeType.LetterSmall: size = new Size(215.9, 279.4); break;
case PageSizeType.CSheet: size = new Size(431.8, 558.8); break;
case PageSizeType.DSheet: size = new Size(558.8, 863.6); break;
case PageSizeType.ESheet: size = new Size(863.6, 1117.6); break;
}
return new Size(ScreenHelper.MmToWidth(size.Width), ScreenHelper.MmToWidth(size.Height));
}
private PageSizeOrientation _pageSizeOrientation;
@@ -599,6 +601,8 @@ 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);
@@ -1464,7 +1468,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
OffsetX += 10;
OffsetY += 10;
@@ -1511,7 +1515,7 @@ namespace AIStudio.Wpf.DiagramDesigner
System.Windows.MessageBox.Show(e.StackTrace, e.Message, System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
}
}
}
}
private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
{