diff --git a/AIStudio.Wpf.Diagram.sln b/AIStudio.Wpf.Diagram.sln index 754b77b..09fd910 100644 --- a/AIStudio.Wpf.Diagram.sln +++ b/AIStudio.Wpf.Diagram.sln @@ -35,6 +35,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.DiagramDesigne EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Script", "Extensions\AIStudio.Wpf.Script\AIStudio.Wpf.Script.csproj", "{27A4C86D-3792-4D14-BAEE-3B103A709872}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AIStudio.Wpf.Block", "Extensions\AIStudio.Wpf.Block\AIStudio.Wpf.Block.csproj", "{C7031E27-57A9-498E-95EE-9C3E7DCCA642}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -81,6 +83,10 @@ Global {27A4C86D-3792-4D14-BAEE-3B103A709872}.Debug|Any CPU.Build.0 = Debug|Any CPU {27A4C86D-3792-4D14-BAEE-3B103A709872}.Release|Any CPU.ActiveCfg = Release|Any CPU {27A4C86D-3792-4D14-BAEE-3B103A709872}.Release|Any CPU.Build.0 = Release|Any CPU + {C7031E27-57A9-498E-95EE-9C3E7DCCA642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C7031E27-57A9-498E-95EE-9C3E7DCCA642}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C7031E27-57A9-498E-95EE-9C3E7DCCA642}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C7031E27-57A9-498E-95EE-9C3E7DCCA642}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -92,6 +98,7 @@ Global {85C437B9-16D2-4076-ABCD-52029AC232FC} = {4959F170-02FB-4B7F-8F53-93DAF22713F9} {FCFC5ABF-8459-4B45-ABA0-9B820C7ED5C6} = {62DC8608-D98F-47BB-9F19-ABB0C60B72FF} {27A4C86D-3792-4D14-BAEE-3B103A709872} = {4959F170-02FB-4B7F-8F53-93DAF22713F9} + {C7031E27-57A9-498E-95EE-9C3E7DCCA642} = {4959F170-02FB-4B7F-8F53-93DAF22713F9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D30FC641-F06C-4E35-AEA5-48A9B6E59CE0} diff --git a/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj index d7243c8..cdd960b 100644 --- a/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj +++ b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp.csproj @@ -129,6 +129,7 @@ + @@ -148,15 +149,27 @@ - + - ..\Extensions\AIStudio.Wpf.Script\Dlls\netcoreapp3.1\AIStudio.Wpf.Script.Core.dll + ..\Extensions\AIStudio.Wpf.Script\Dlls\net461\AIStudio.Wpf.Script.Core.dll + + + + + + ..\Extensions\AIStudio.Wpf.Block\Dlls\net5.0-windows\AIStudio.Wpf.Block.Core.dll + + + + + + ..\Extensions\AIStudio.Wpf.Block\Dlls\net6.0-windows\AIStudio.Wpf.Block.Core.dll - - ..\Extensions\AIStudio.Wpf.Script\Dlls\net461\AIStudio.Wpf.Script.Core.dll + + ..\Extensions\AIStudio.Wpf.Block\Dlls\net461\AIStudio.Wpf.Block.Core.dll diff --git a/AIStudio.Wpf.DiagramApp/App.xaml b/AIStudio.Wpf.DiagramApp/App.xaml index 5142858..492f431 100644 --- a/AIStudio.Wpf.DiagramApp/App.xaml +++ b/AIStudio.Wpf.DiagramApp/App.xaml @@ -17,7 +17,7 @@ - + diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/BlockViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/BlockViewModel.cs index 21e1260..dcd7a2b 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/BlockViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/BlockViewModel.cs @@ -4,7 +4,8 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; -//using AIStudio.Wpf.Block.ViewModels; +using AIStudio.Wpf.Block; +using AIStudio.Wpf.Block.Core.ViewModels; using AIStudio.Wpf.DiagramApp.Models; using AIStudio.Wpf.DiagramDesigner; @@ -25,6 +26,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { base.InitDiagramViewModel(); + DiagramViewModel.DiagramOption.LayoutOption.PageSizeOrientation = PageSizeOrientation.Horizontal; DiagramViewModel.DiagramOption.LayoutOption.ShowGrid = false; } @@ -32,17 +34,224 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels { base.Init(initNew); - //StartBlockItemViewModel start = new StartBlockItemViewModel(DiagramViewModel) { Left = 28, Top = 28 }; - //DiagramViewModel.Add(start); + #region + //运动 + BlockDesignerItemViewModel MoveNode = new MoveNode(DiagramViewModel) { Name = nameof(MoveNode), Left = 28, Top = 28 }; + DiagramViewModel.Add(MoveNode); + BlockDesignerItemViewModel TurnRightNode = new TurnRightNode(DiagramViewModel) { Name = nameof(TurnRightNode), Left = 28, Top = 68 }; + DiagramViewModel.Add(TurnRightNode); + BlockDesignerItemViewModel TurnLeftNode = new TurnLeftNode(DiagramViewModel) { Name = nameof(TurnLeftNode), Left = 28, Top = 108 }; + DiagramViewModel.Add(TurnLeftNode); + BlockDesignerItemViewModel MoveToNode = new MoveToNode(DiagramViewModel) { Name = nameof(MoveToNode), Left = 28, Top = 148 }; + DiagramViewModel.Add(MoveToNode); + BlockDesignerItemViewModel MoveToPointNode = new MoveToPointNode(DiagramViewModel) { Name = nameof(MoveToPointNode), Left = 28, Top = 188 }; + DiagramViewModel.Add(MoveToPointNode); + BlockDesignerItemViewModel TimeMoveToNode = new TimeMoveToNode(DiagramViewModel) { Name = nameof(TimeMoveToNode), Left = 28, Top = 228 }; + DiagramViewModel.Add(TimeMoveToNode); + BlockDesignerItemViewModel TimeMoveToPointNode = new TimeMoveToPointNode(DiagramViewModel) { Name = nameof(TimeMoveToPointNode), Left = 28, Top = 268 }; + DiagramViewModel.Add(TimeMoveToPointNode); + BlockDesignerItemViewModel FaceToNode = new FaceToNode(DiagramViewModel) { Name = nameof(FaceToNode), Left = 28, Top = 308 }; + DiagramViewModel.Add(FaceToNode); + BlockDesignerItemViewModel FaceToMouseNode = new FaceToMouseNode(DiagramViewModel) { Name = nameof(FaceToMouseNode), Left = 28, Top = 348 }; + DiagramViewModel.Add(FaceToMouseNode); + BlockDesignerItemViewModel PointXAddNode = new PointXAddNode(DiagramViewModel) { Name = nameof(PointXAddNode), Left = 28, Top = 388 }; + DiagramViewModel.Add(PointXAddNode); + BlockDesignerItemViewModel PointXSetNode = new PointXSetNode(DiagramViewModel) { Name = nameof(PointXSetNode), Left = 28, Top = 428 }; + DiagramViewModel.Add(PointXSetNode); + BlockDesignerItemViewModel PointYAddNode = new PointYAddNode(DiagramViewModel) { Name = nameof(PointYAddNode), Left = 28, Top = 468 }; + DiagramViewModel.Add(PointYAddNode); + BlockDesignerItemViewModel PointYSetNode = new PointYSetNode(DiagramViewModel) { Name = nameof(PointYSetNode), Left = 28, Top = 508 }; + DiagramViewModel.Add(PointYSetNode); + BlockDesignerItemViewModel BorderBounceNode = new BorderBounceNode(DiagramViewModel) { Name = nameof(BorderBounceNode), Left = 28, Top = 548 }; + DiagramViewModel.Add(BorderBounceNode); + BlockDesignerItemViewModel RotationMethodNode = new RotationMethodNode(DiagramViewModel) { Name = nameof(RotationMethodNode), Left = 28, Top = 588 }; + DiagramViewModel.Add(RotationMethodNode); + BlockDesignerItemViewModel PointXNode = new PointXNode(DiagramViewModel) { Name = nameof(PointXNode), Left = 28, Top = 628 }; + DiagramViewModel.Add(PointXNode); + BlockDesignerItemViewModel PointYNode = new PointYNode(DiagramViewModel) { Name = nameof(PointYNode), Left = 28, Top = 668 }; + DiagramViewModel.Add(PointYNode); + BlockDesignerItemViewModel DirectionNode = new DirectionNode(DiagramViewModel) { Name = nameof(DirectionNode), Left = 28, Top = 708 }; + DiagramViewModel.Add(DirectionNode); - //WaitTimeBlockItemViewModel waittime = new WaitTimeBlockItemViewModel(DiagramViewModel) { Left = 28, Top = 28 }; - //DiagramViewModel.Add(waittime); + BlockDesignerItemViewModel SayTimeNode = new SayTimeNode(DiagramViewModel) { Name = nameof(SayTimeNode), Left = 288, Top = 28 }; + DiagramViewModel.Add(SayTimeNode); + BlockDesignerItemViewModel SayNode = new SayNode(DiagramViewModel) { Name = nameof(SayNode), Left = 288, Top = 68 }; + DiagramViewModel.Add(SayNode); + BlockDesignerItemViewModel ThinkTimeNode = new ThinkTimeNode(DiagramViewModel) { Name = nameof(ThinkTimeNode), Left = 288, Top = 108 }; + DiagramViewModel.Add(ThinkTimeNode); + BlockDesignerItemViewModel ThinkBlockNode = new ThinkBlockNode(DiagramViewModel) { Name = nameof(ThinkBlockNode), Left = 288, Top = 148 }; + DiagramViewModel.Add(ThinkBlockNode); + BlockDesignerItemViewModel ChangeLookNode = new ChangeLookNode(DiagramViewModel) { Name = nameof(ChangeLookNode), Left = 288, Top = 188 }; + DiagramViewModel.Add(ChangeLookNode); + BlockDesignerItemViewModel NextLookNode = new NextLookNode(DiagramViewModel) { Name = nameof(NextLookNode), Left = 288, Top = 228 }; + DiagramViewModel.Add(NextLookNode); + BlockDesignerItemViewModel ChangeBackgroundNode = new ChangeBackgroundNode(DiagramViewModel) { Name = nameof(ChangeBackgroundNode), Left = 288, Top = 268 }; + DiagramViewModel.Add(ChangeBackgroundNode); + BlockDesignerItemViewModel NextBackgroundNode = new NextBackgroundNode(DiagramViewModel) { Name = nameof(NextBackgroundNode), Left = 288, Top = 308 }; + DiagramViewModel.Add(NextBackgroundNode); + BlockDesignerItemViewModel AddSizeNode = new AddSizeNode(DiagramViewModel) { Name = nameof(AddSizeNode), Left = 288, Top = 348 }; + DiagramViewModel.Add(AddSizeNode); + BlockDesignerItemViewModel SetSizeNode = new SetSizeNode(DiagramViewModel) { Name = nameof(SetSizeNode), Left = 288, Top = 388 }; + DiagramViewModel.Add(SetSizeNode); + BlockDesignerItemViewModel ClearEffectNode = new ClearEffectNode(DiagramViewModel) { Name = nameof(ClearEffectNode), Left = 288, Top = 428 }; + DiagramViewModel.Add(ClearEffectNode); + BlockDesignerItemViewModel ShowEffectNode = new ShowNode(DiagramViewModel) { Name = nameof(ShowNode), Left = 288, Top = 468 }; + DiagramViewModel.Add(ShowEffectNode); + BlockDesignerItemViewModel HideEffectNode = new HideNode(DiagramViewModel) { Name = nameof(HideNode), Left = 288, Top = 508 }; + DiagramViewModel.Add(HideEffectNode); + BlockDesignerItemViewModel BringToNode = new BringToNode(DiagramViewModel) { Name = nameof(BringToNode), Left = 288, Top = 548 }; + DiagramViewModel.Add(BringToNode); + BlockDesignerItemViewModel BringLayerNode = new BringLayerNode(DiagramViewModel) { Name = nameof(BringLayerNode), Left = 288, Top = 588 }; + DiagramViewModel.Add(BringLayerNode); + BlockDesignerItemViewModel LookNode = new LookNode(DiagramViewModel) { Name = nameof(LookNode), Left = 288, Top = 628 }; + DiagramViewModel.Add(LookNode); + BlockDesignerItemViewModel BackgroundNode = new BackgroundNode(DiagramViewModel) { Name = nameof(BackgroundNode), Left = 288, Top = 668 }; + DiagramViewModel.Add(BackgroundNode); + BlockDesignerItemViewModel SizeNode = new SizeNode(DiagramViewModel) { Name = nameof(SizeNode), Left = 288, Top = 708 }; + DiagramViewModel.Add(SizeNode); - //AddBlockItemViewModel add = new AddBlockItemViewModel(DiagramViewModel) { Left = 28, Top = 28 }; - //DiagramViewModel.Add(add); + BlockDesignerItemViewModel PlaySoundCompleteNode = new PlaySoundCompleteNode(DiagramViewModel) { Name = nameof(PlaySoundCompleteNode), Left = 448, Top = 28 }; + DiagramViewModel.Add(PlaySoundCompleteNode); + BlockDesignerItemViewModel PlaySoundNode = new PlaySoundNode(DiagramViewModel) { Name = nameof(PlaySoundNode), Left = 448, Top = 68 }; + DiagramViewModel.Add(PlaySoundNode); + BlockDesignerItemViewModel StopAllSoundNode = new StopAllSoundNode(DiagramViewModel) { Name = nameof(StopAllSoundNode), Left = 448, Top = 108 }; + DiagramViewModel.Add(StopAllSoundNode); + BlockDesignerItemViewModel AddSoundEffectNode = new AddSoundEffectNode(DiagramViewModel) { Name = nameof(AddSoundEffectNode), Left = 448, Top = 148 }; + DiagramViewModel.Add(AddSoundEffectNode); + BlockDesignerItemViewModel SetSoundEffectNode = new SetSoundEffectNode(DiagramViewModel) { Name = nameof(SetSoundEffectNode), Left = 448, Top = 188 }; + DiagramViewModel.Add(SetSoundEffectNode); + BlockDesignerItemViewModel ClearSoundEffectNode = new ClearSoundEffectNode(DiagramViewModel) { Name = nameof(ClearSoundEffectNode), Left = 448, Top = 228 }; + DiagramViewModel.Add(ClearSoundEffectNode); + BlockDesignerItemViewModel AddVolumeNode = new AddVolumeNode(DiagramViewModel) { Name = nameof(AddVolumeNode), Left = 448, Top = 268 }; + DiagramViewModel.Add(AddVolumeNode); + BlockDesignerItemViewModel SetVolumeNode = new SetVolumeNode(DiagramViewModel) { Name = nameof(SetVolumeNode), Left = 448, Top = 308 }; + DiagramViewModel.Add(SetVolumeNode); + BlockDesignerItemViewModel VolumeNode = new VolumeNode(DiagramViewModel) { Name = nameof(VolumeNode), Left = 448, Top = 348 }; + DiagramViewModel.Add(VolumeNode); - //KeyboardPressBlockItemViewModel keyboardPress = new KeyboardPressBlockItemViewModel(DiagramViewModel) { Left = 28, Top = 28 }; - //DiagramViewModel.Add(keyboardPress); + BlockDesignerItemViewModel StartNode = new StartNode(DiagramViewModel) { Name = nameof(StartNode), Left = 638, Top = 28 }; + DiagramViewModel.Add(StartNode); + BlockDesignerItemViewModel KeyboardPressNode = new KeyboardPressNode(DiagramViewModel) { Name = nameof(KeyboardPressNode), Left = 638, Top = 88 }; + DiagramViewModel.Add(KeyboardPressNode); + BlockDesignerItemViewModel WhenRoleClickedNode = new WhenRoleClickedNode(DiagramViewModel) { Name = nameof(WhenRoleClickedNode), Left = 638, Top = 148 }; + DiagramViewModel.Add(WhenRoleClickedNode); + BlockDesignerItemViewModel WhenBackgroundSwitchNode = new WhenBackgroundSwitchNode(DiagramViewModel) { Name = nameof(WhenBackgroundSwitchNode), Left = 638, Top = 208 }; + DiagramViewModel.Add(WhenBackgroundSwitchNode); + BlockDesignerItemViewModel WhenGreaterThanNode = new WhenGreaterThanNode(DiagramViewModel) { Name = nameof(WhenGreaterThanNode), Left = 638, Top = 268 }; + DiagramViewModel.Add(WhenGreaterThanNode); + BlockDesignerItemViewModel WhenReceivedMessageNode = new WhenReceivedMessageNode(DiagramViewModel) { Name = nameof(WhenReceivedMessageNode), Left = 638, Top = 328 }; + DiagramViewModel.Add(WhenReceivedMessageNode); + BlockDesignerItemViewModel BroadcastMessageNode = new BroadcastMessageNode(DiagramViewModel) { Name = nameof(BroadcastMessageNode), Left = 638, Top = 388 }; + DiagramViewModel.Add(BroadcastMessageNode); + BlockDesignerItemViewModel BroadcastMessageAndWaitingNode = new BroadcastMessageAndWaitingNode(DiagramViewModel) { Name = nameof(BroadcastMessageAndWaitingNode), Left = 638, Top = 448 }; + DiagramViewModel.Add(BroadcastMessageAndWaitingNode); + + BlockDesignerItemViewModel WaitTimeNode = new WaitTimeNode(DiagramViewModel) { Name = nameof(WaitTimeNode), Left = 788, Top = 28 }; + DiagramViewModel.Add(WaitTimeNode); + BlockDesignerItemViewModel ForNode = new ForNode(DiagramViewModel) { Name = nameof(ForNode), Left = 788, Top = 68 }; + DiagramViewModel.Add(ForNode); + BlockDesignerItemViewModel AlwaysNode = new AlwaysNode(DiagramViewModel) { Name = nameof(AlwaysNode), Left = 788, Top = 158 }; + DiagramViewModel.Add(AlwaysNode); + BlockDesignerItemViewModel IfNode = new IfNode(DiagramViewModel) { Name = nameof(IfNode), Left = 788, Top = 238 }; + DiagramViewModel.Add(IfNode); + BlockDesignerItemViewModel IfElseNode = new IfElseNode(DiagramViewModel) { Name = nameof(IfElseNode), Left = 788, Top = 328 }; + DiagramViewModel.Add(IfElseNode); + BlockDesignerItemViewModel WaitNode = new WaitNode(DiagramViewModel) { Name = nameof(WaitNode), Left = 788, Top = 458 }; + DiagramViewModel.Add(WaitNode); + BlockDesignerItemViewModel WhileNode = new WhileNode(DiagramViewModel) { Name = nameof(WhileNode), Left = 788, Top = 498 }; + DiagramViewModel.Add(WhileNode); + BlockDesignerItemViewModel StopNode = new StopNode(DiagramViewModel) { Name = nameof(StopNode), Left = 788, Top = 578 }; + DiagramViewModel.Add(StopNode); + BlockDesignerItemViewModel CloneStartNode = new CloneStartNode(DiagramViewModel) { Name = nameof(CloneStartNode), Left = 788, Top = 618 }; + DiagramViewModel.Add(CloneStartNode); + BlockDesignerItemViewModel CloneNode = new CloneNode(DiagramViewModel) { Name = nameof(CloneNode), Left = 788, Top = 678 }; + DiagramViewModel.Add(CloneNode); + BlockDesignerItemViewModel DeleteThisCloneNode = new DeleteThisCloneNode(DiagramViewModel) { Name = nameof(DeleteThisCloneNode), Left = 788, Top = 718 }; + DiagramViewModel.Add(DeleteThisCloneNode); + + BlockDesignerItemViewModel HitNode = new HitNode(DiagramViewModel) { Name = nameof(HitNode), Left = 928, Top = 28 }; + DiagramViewModel.Add(HitNode); + BlockDesignerItemViewModel HitColorNode = new HitColorNode(DiagramViewModel) { Name = nameof(HitColorNode), Left = 928, Top = 68 }; + DiagramViewModel.Add(HitColorNode); + BlockDesignerItemViewModel ColorHitColorNode = new ColorHitColorNode(DiagramViewModel) { Name = nameof(ColorHitColorNode), Left = 928, Top = 108 }; + DiagramViewModel.Add(ColorHitColorNode); + BlockDesignerItemViewModel DistanceNode = new DistanceNode(DiagramViewModel) { Name = nameof(DistanceNode), Left = 928, Top = 148 }; + DiagramViewModel.Add(DistanceNode); + BlockDesignerItemViewModel AskNode = new AskNode(DiagramViewModel) { Name = nameof(AskNode), Left = 928, Top = 188 }; + DiagramViewModel.Add(AskNode); + BlockDesignerItemViewModel AnswerNode = new AnswerNode(DiagramViewModel) { Name = nameof(AnswerNode), Left = 928, Top = 228 }; + DiagramViewModel.Add(AnswerNode); + BlockDesignerItemViewModel PressKeyNode = new PressKeyNode(DiagramViewModel) { Name = nameof(PressKeyNode), Left = 928, Top = 268 }; + DiagramViewModel.Add(PressKeyNode); + BlockDesignerItemViewModel PressMouseNode = new PressMouseNode(DiagramViewModel) { Name = nameof(PressMouseNode), Left = 928, Top = 308 }; + DiagramViewModel.Add(PressMouseNode); + BlockDesignerItemViewModel MousePointXNode = new MousePointXNode(DiagramViewModel) { Name = nameof(MousePointXNode), Left = 928, Top = 348 }; + DiagramViewModel.Add(MousePointXNode); + BlockDesignerItemViewModel MousePointYNode = new MousePointYNode(DiagramViewModel) { Name = nameof(MousePointYNode), Left = 928, Top = 388 }; + DiagramViewModel.Add(MousePointYNode); + BlockDesignerItemViewModel DragModeNode = new DragModeNode(DiagramViewModel) { Name = nameof(DragModeNode), Left = 928, Top = 428 }; + DiagramViewModel.Add(DragModeNode); + BlockDesignerItemViewModel LoudnessNode = new LoudnessNode(DiagramViewModel) { Name = nameof(LoudnessNode), Left = 928, Top = 468 }; + DiagramViewModel.Add(LoudnessNode); + BlockDesignerItemViewModel TimerNode = new TimerNode(DiagramViewModel) { Name = nameof(TimerNode), Left = 928, Top = 508 }; + DiagramViewModel.Add(TimerNode); + BlockDesignerItemViewModel ClearTimerNode = new ClearTimerNode(DiagramViewModel) { Name = nameof(ClearTimerNode), Left = 928, Top = 548 }; + DiagramViewModel.Add(ClearTimerNode); + BlockDesignerItemViewModel StageObjectNode = new StageObjectNode(DiagramViewModel) { Name = nameof(StageObjectNode), Left = 928, Top = 588 }; + DiagramViewModel.Add(StageObjectNode); + BlockDesignerItemViewModel NowTimeNode = new NowTimeNode(DiagramViewModel) { Name = nameof(NowTimeNode), Left = 928, Top = 628 }; + DiagramViewModel.Add(NowTimeNode); + BlockDesignerItemViewModel DaysFrom2000Node = new DaysFrom2000Node(DiagramViewModel) { Name = nameof(DaysFrom2000Node), Left = 928, Top = 668 }; + DiagramViewModel.Add(DaysFrom2000Node); + BlockDesignerItemViewModel UserNameNode = new UserNameNode(DiagramViewModel) { Name = nameof(UserNameNode), Left = 928, Top = 708 }; + DiagramViewModel.Add(UserNameNode); + + BlockDesignerItemViewModel AddNode = new AddNode(DiagramViewModel) { Name = nameof(AddNode), Left = 1108, Top = 28 }; + DiagramViewModel.Add(AddNode); + BlockDesignerItemViewModel SubtractNode = new SubtractNode(DiagramViewModel) { Name = nameof(SubtractNode), Left = 1108, Top = 68 }; + DiagramViewModel.Add(SubtractNode); + BlockDesignerItemViewModel MultiplyNode = new MultiplyNode(DiagramViewModel) { Name = nameof(MultiplyNode), Left = 1108, Top = 108 }; + DiagramViewModel.Add(MultiplyNode); + BlockDesignerItemViewModel DivisionNode = new DivisionNode(DiagramViewModel) { Name = nameof(DivisionNode), Left = 1108, Top = 148 }; + DiagramViewModel.Add(DivisionNode); + BlockDesignerItemViewModel RandomNode = new RandomNode(DiagramViewModel) { Name = nameof(RandomNode), Left = 1108, Top = 188 }; + DiagramViewModel.Add(RandomNode); + BlockDesignerItemViewModel GreaterThanNode = new GreaterThanNode(DiagramViewModel) { Name = nameof(GreaterThanNode), Left = 1108, Top = 228 }; + DiagramViewModel.Add(GreaterThanNode); + BlockDesignerItemViewModel LessThanNode = new LessThanNode(DiagramViewModel) { Name = nameof(LessThanNode), Left = 1108, Top = 268 }; + DiagramViewModel.Add(LessThanNode); + BlockDesignerItemViewModel EqualThanNode = new EqualThanNode(DiagramViewModel) { Name = nameof(EqualThanNode), Left = 1108, Top = 308 }; + DiagramViewModel.Add(EqualThanNode); + BlockDesignerItemViewModel AndNode = new AndNode(DiagramViewModel) { Name = nameof(AndNode), Left = 1108, Top = 348 }; + DiagramViewModel.Add(AndNode); + BlockDesignerItemViewModel OrNode = new OrNode(DiagramViewModel) { Name = nameof(OrNode), Left = 1108, Top = 388 }; + DiagramViewModel.Add(OrNode); + BlockDesignerItemViewModel NotNode = new NotNode(DiagramViewModel) { Name = nameof(NotNode), Left = 1108, Top = 428 }; + DiagramViewModel.Add(NotNode); + BlockDesignerItemViewModel StringAddNode = new StringAddNode(DiagramViewModel) { Name = nameof(StringAddNode), Left = 1108, Top = 468 }; + DiagramViewModel.Add(StringAddNode); + BlockDesignerItemViewModel StringIndexNode = new StringIndexNode(DiagramViewModel) { Name = nameof(StringIndexNode), Left = 1108, Top = 508 }; + DiagramViewModel.Add(StringIndexNode); + BlockDesignerItemViewModel StringContainNode = new StringContainNode(DiagramViewModel) { Name = nameof(StringContainNode), Left = 1108, Top = 548 }; + DiagramViewModel.Add(StringContainNode); + BlockDesignerItemViewModel ModNode = new ModNode(DiagramViewModel) { Name = nameof(ModNode), Left = 1108, Top = 588 }; + DiagramViewModel.Add(ModNode); + BlockDesignerItemViewModel RoundNode = new RoundNode(DiagramViewModel) { Name = nameof(RoundNode), Left = 1108, Top = 628 }; + DiagramViewModel.Add(RoundNode); + BlockDesignerItemViewModel MathNode = new MathNode(DiagramViewModel) { Name = nameof(MathNode), Left = 1108, Top = 668 }; + DiagramViewModel.Add(MathNode); + + BlockDesignerItemViewModel VariableNode = new VariableNode(DiagramViewModel) { Name = nameof(VariableNode), Left = 1318, Top = 28 }; + DiagramViewModel.Add(VariableNode); + BlockDesignerItemViewModel SetVariableNode = new SetVariableNode(DiagramViewModel) { Name = nameof(SetVariableNode), Left = 1318, Top = 68 }; + DiagramViewModel.Add(SetVariableNode); + BlockDesignerItemViewModel IncreaseVariableNode = new IncreaseVariableNode(DiagramViewModel) { Name = nameof(IncreaseVariableNode), Left = 1318, Top = 108 }; + DiagramViewModel.Add(IncreaseVariableNode); + BlockDesignerItemViewModel ShowVariableNode = new ShowVariableNode(DiagramViewModel) { Name = nameof(ShowVariableNode), Left = 1318, Top = 148 }; + DiagramViewModel.Add(ShowVariableNode); + BlockDesignerItemViewModel HiddenVariableNode = new HiddenVariableNode(DiagramViewModel) { Name = nameof(HiddenVariableNode), Left = 1318, Top = 188 }; + DiagramViewModel.Add(HiddenVariableNode); + #endregion } } } diff --git a/AIStudio.Wpf.DiagramDesigner.Additionals/AIStudio.Wpf.DiagramDesigner.Additionals_ihwwsf1d_wpftmp.csproj b/AIStudio.Wpf.DiagramDesigner.Additionals/AIStudio.Wpf.DiagramDesigner.Additionals_ihwwsf1d_wpftmp.csproj new file mode 100644 index 0000000..8b4dabd --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner.Additionals/AIStudio.Wpf.DiagramDesigner.Additionals_ihwwsf1d_wpftmp.csproj @@ -0,0 +1,309 @@ + + + AIStudio.Wpf.DiagramDesigner.Additionals + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramDesigner.Additionals\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.DiagramDesigner.Additionals + + + + true + true + AIStudio.Wpf.Controls + akwkevin + https://gitee.com/akwkevin + A.png + + + 1.1.7 + 一个Wpf的Diagram控件帮助库 + + + + + + + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/BlockConnectorInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/BlockConnectorInfo.cs index c17171e..e176e3b 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/BlockConnectorInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/BlockConnectorInfo.cs @@ -64,5 +64,53 @@ namespace AIStudio.Wpf.DiagramDesigner return false; } } + + public PointBase LeftPosition + { + get + { + return new PointBase(MiddlePosition.X - DataItem.GetItemWidth() / 2, MiddlePosition.Y); + } + } + + public PointBase RightPosition + { + get + { + return new PointBase(MiddlePosition.X + DataItem.GetItemWidth() / 2, MiddlePosition.Y); + } + } + + public double DistanceTo(BlockConnectorInfo port) + { + PointBase p0 = port.LeftPosition; + PointBase p1 = port.RightPosition; + PointBase p2 = LeftPosition; + PointBase p3 = RightPosition; + var distance1 = DistanceTo(p0, p1, p2); + var distance2 = DistanceTo(p0, p1, p3); + var distance3 = DistanceTo(p2, p3, p0); + var distance4 = DistanceTo(p2, p3, p1); + + return Math.Min(Math.Min(distance1, distance2), Math.Min(distance3, distance4)); + } + + double DistanceTo(PointBase A, PointBase B, PointBase P) //点P到线段AB的最短距离 + { + double r = ((P.X - A.X) * (B.X - A.X) + (P.Y - A.Y) * (B.Y - A.Y)) / DistanceToPow(A, B); + if (r <= 0) return Math.Sqrt(DistanceToPow(A, P)); + else if (r >= 1) return Math.Sqrt(DistanceToPow(B, P)); + else + { + double AC = r * Math.Sqrt(DistanceToPow(A, B)); + return Math.Sqrt(DistanceToPow(A, P) - AC * AC); + } + } + + double DistanceToPow(PointBase a, PointBase b) //点a、b距离的平方 + { + return (a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y); + } + } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs index 02c4501..c5f0d9a 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs @@ -776,12 +776,12 @@ namespace AIStudio.Wpf.DiagramDesigner public double GetItemWidth() { - return double.IsNaN(ItemWidth) ? ActualItemWidth : ItemWidth; + return double.IsNaN(ItemWidth) ? Math.Max(ActualItemWidth, MinItemWidth) : ItemWidth; } public double GetItemHeight() { - return double.IsNaN(ItemHeight) ? ActualItemHeight : ItemHeight; + return double.IsNaN(ItemHeight) ? Math.Max(ActualItemHeight, MinItemHeight) : ItemHeight; } public IShape GetShape() => ShapeDefiner(this); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramOption.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramOption.cs index 8a3ad5e..49ffc2c 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramOption.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramOption.cs @@ -382,6 +382,10 @@ namespace AIStudio.Wpf.DiagramDesigner { get; set; } = 50; + public double BlockSnappingRadius + { + get; set; + } = 30; } public class ShortcutOption diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs index a90329b..4bc4871 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModel.cs @@ -37,30 +37,35 @@ namespace AIStudio.Wpf.DiagramDesigner IsReadOnlyText = true; } - public void AddNext(BlockDesignerItemViewModel next) + public void AddNext(BlockDesignerItemViewModel next, bool first = true) { if (this.Next == next) { AlignNext(next); return; } - var oldnext = this.Next; - RemoveNext(); + + if (next.Prev != null) + { + next.Prev.RemoveNext(); + } + + var oldnext = RemoveNext(); next.Left = this.Left; next.Top = this.Top + this.GetItemHeight(); next.ParentId = this.Id; - next.Parent = this; + next.Prev = this; this.Next = next; if (next.Next != null) { next.AlignNext(next.Next); } - if (oldnext != null) + if (oldnext != null && first == true) { System.Windows.Application.Current?.Dispatcher.BeginInvoke(new Action(async () => { await Task.Delay(10); - GetLast().AddNext(oldnext); + GetLast().AddNext(oldnext, false); })); } @@ -79,14 +84,19 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public void RemoveNext() + public BlockDesignerItemViewModel RemoveNext() { var next = this.Next; if (next != null) { next.ParentId = new Guid(); - next.Parent = null; + next.Prev = null; this.Next = null; + return next; + } + else + { + return null; } } @@ -120,9 +130,34 @@ namespace AIStudio.Wpf.DiagramDesigner { this.RemoveChild(oldchildren, container); } + Root.Items.Remove(child); + if (child.Prev != null) + { + child.Prev.RemoveNext(); + } + if (child.Next != null) + { + child.RemoveNext(); + } + container.InsertChild(child, index); + } + else + { + var list = child.GetNexts(true); + list.Reverse(); + list.ForEach(p => { + Root.Items.Remove(p); + if (p.Prev != null) + { + p.Prev.RemoveNext(); + } + if (p.Next != null) + { + p.RemoveNext(); + } + container.InsertChild(p, index); + }); } - Root.Items.Remove(child); - container.InsertChild(child, index); child.RemoveFromSelection(); this.GetRootContainItem.AddToSelection(true, true); @@ -177,6 +212,13 @@ namespace AIStudio.Wpf.DiagramDesigner { return Parent as BlockDesignerItemViewModel; } + set + { + if (Parent != value) + { + Parent = value; + } + } } public BlockDesignerItemViewModel Next @@ -220,28 +262,44 @@ namespace AIStudio.Wpf.DiagramDesigner public BlockDesignerItemViewModel GetFirst() { - var parent = this.Next; - if (parent != null) + var parent = this.Prev; + while (parent?.Prev != null) { - while (parent.Parent != null) - { - parent = parent.Parent as BlockDesignerItemViewModel; - } + parent = parent.Prev; } + return parent; } public BlockDesignerItemViewModel GetLast() { var next = this; - if (next != null) + while (next.Next != null) { - while (next.Next != null) + next = next.Next; + } + + return next; + } + + public List GetNexts(bool self) + { + List blockDesignerItemViewModels = new List(); + if (self) + { + blockDesignerItemViewModels.Add(this); + } + var next = this; + while (next != null) + { + next = next.Next; + if (next != null) { - next = next.Next; + blockDesignerItemViewModels.Add(next); } } - return next; + + return blockDesignerItemViewModels; } public void AddContainer(BlockItemsContainerInfo container) diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModelHelper.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModelHelper.cs index ce0cc2d..8292b00 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModelHelper.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BlockViewModel/BlockDesignerItemViewModelHelper.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; +using System.Windows.Documents; namespace AIStudio.Wpf.DiagramDesigner { @@ -33,65 +35,84 @@ namespace AIStudio.Wpf.DiagramDesigner FullyCreatedConnectorInfo parent = null; FullyCreatedConnectorInfo next = null; - foreach (var port in items.SelectMany(n => n.Connectors).OfType()) + + foreach (var port2 in blockDesignerItemTempLink.Connectors.OfType()) { - //已经被连接的不允许在顶部吸附了 - if ((port.Orientation == ConnectorOrientation.Top || port.Orientation == ConnectorOrientation.Left) && port.DataItem.Prev != null) - { - continue; + bool success = false; + foreach (var item in items) + { + foreach (var port in item.Connectors.OfType()) + { + //已经被连接的不允许在顶部吸附了 + if ((port.Orientation == ConnectorOrientation.Top || port.Orientation == ConnectorOrientation.Left) && port.DataItem.Prev != null) + { + continue; + } + + //parent + if (parent == null) + { + if ((port.Orientation == ConnectorOrientation.Right && port2.Orientation == ConnectorOrientation.Left) + || (port.Orientation == ConnectorOrientation.Bottom && port2.Orientation == ConnectorOrientation.Top)) + { + var dis = port.DistanceTo(port2); + Debug.WriteLine($"{port.DataItem.Name}-{port2.DataItem.Name}:{dis}"); + if (dis < diagramViewModel.DiagramOption.SnappingOption.BlockSnappingRadius) + { + port.DataItem.ShowConnectors = true; + if (port.CanAttachTo(port2) == true) + { + diagramViewModel.AddAttachTo(port, true); + parent = port; + success = true; + break; + } + else + { + diagramViewModel.AddAttachTo(port, false); + } + + } + } + } + + //next + if (next == null) + { + if ((port.Orientation == ConnectorOrientation.Left && port2.Orientation == ConnectorOrientation.Right) + || (port.Orientation == ConnectorOrientation.Top && port2.Orientation == ConnectorOrientation.Bottom)) + { + var dis = port.DistanceTo(port2); + Debug.WriteLine($"{port.DataItem.Name}-{port2.DataItem.Name}:{dis}"); + if (dis < diagramViewModel.DiagramOption.SnappingOption.BlockSnappingRadius) + { + port.DataItem.ShowConnectors = true; + if (port.CanAttachTo(port2) == true) + { + diagramViewModel.AddAttachTo(port, true); + next = port; + success = true; + break; + } + else + { + diagramViewModel.AddAttachTo(port, false); + } + + } + } + } + } + + if (success) + { + break; + } } - foreach (var port2 in blockDesignerItemTempLink.Connectors) + if (success) { - //parent - if (parent == null) - { - if ((port.Orientation == ConnectorOrientation.Right && port2.Orientation == ConnectorOrientation.Left) - || (port.Orientation == ConnectorOrientation.Bottom && port2.Orientation == ConnectorOrientation.Top)) - { - - if (port.Position.DistanceTo(port2.Position) < diagramViewModel.DiagramOption.SnappingOption.SnappingRadius) - { - port.DataItem.ShowConnectors = true; - if (port2.CanAttachTo(port) == true) - { - diagramViewModel.AddAttachTo(port, true); - parent = port; - continue; - } - else - { - diagramViewModel.AddAttachTo(port, false); - } - - } - } - } - - //next - if (next == null) - { - if ((port.Orientation == ConnectorOrientation.Left && port2.Orientation == ConnectorOrientation.Right) - || (port.Orientation == ConnectorOrientation.Top && port2.Orientation == ConnectorOrientation.Bottom)) - { - - if (port.Position.DistanceTo(port2.Position) < diagramViewModel.DiagramOption.SnappingOption.SnappingRadius) - { - port.DataItem.ShowConnectors = true; - if (port2.CanAttachTo(port) == true) - { - diagramViewModel.AddAttachTo(port, true); - next = port; - continue; - } - else - { - diagramViewModel.AddAttachTo(port, false); - } - - } - } - } + break; } } @@ -113,17 +134,17 @@ namespace AIStudio.Wpf.DiagramDesigner { var innerport = container.GetAllContainers(container.Children, false).Where(p => p.GetBounds().IntersectsWith(blockDesignerItemTempLink.GetBounds())).OrderByDescending(p => p.ContainerLevel).FirstOrDefault(); if (innerport != null) - { + { if (innerport.CanAttachTo(blockDesignerItemTempLink.Items.FirstOrDefault()) == true) { - innerport.DataItem.ShowConnectors = true; + innerport.DataItem.ShowConnectors = true; if (innerport.OnlyOneChild || innerport.Children.Count == 0) { diagramViewModel.AddAttachTo(innerport, true); } else { - diagramViewModel.FindNearPortToAttachTo(innerport.Children.ToList(), blockDesignerItemTempLink); + diagramViewModel.FindNearPortToAttachTo(innerport.Children.ToList(), blockDesignerItemTempLink); } return innerport; } @@ -136,7 +157,7 @@ namespace AIStudio.Wpf.DiagramDesigner } else { - + if (container.CanAttachTo(blockDesignerItemTempLink.Items.FirstOrDefault()) == true) { container.DataItem.ShowConnectors = true; @@ -146,7 +167,7 @@ namespace AIStudio.Wpf.DiagramDesigner } else { - diagramViewModel.FindNearPortToAttachTo(container.Children.ToList(), blockDesignerItemTempLink); + diagramViewModel.FindNearPortToAttachTo(container.Children.ToList(), blockDesignerItemTempLink); } return container; } @@ -172,6 +193,11 @@ namespace AIStudio.Wpf.DiagramDesigner { diagramViewModel.ClearAttachTo(); var links = BlockDesignerItemTempLink.Build(blocks); + + blocks.ToList().ForEach(p => { + p.ZIndex = int.MaxValue; + }); + foreach (BlockDesignerItemTempLink item in links) { var container = diagramViewModel.FindNearContainerToAttachTo(item); @@ -192,9 +218,13 @@ namespace AIStudio.Wpf.DiagramDesigner return; if (blocks.Any()) - { + { var links = BlockDesignerItemTempLink.Build(blocks); + blocks.ToList().ForEach(p => { + p.ZIndex = diagramViewModel.Items.Where(q => q.ZIndex != int.MaxValue).Any() ? diagramViewModel.Items.Where(q => q.ZIndex != int.MaxValue).Max(r => r.ZIndex) + 1 : 0; + }); + foreach (BlockDesignerItemTempLink item in links) { var container = diagramViewModel.FindNearContainerToAttachTo(item); @@ -207,10 +237,10 @@ namespace AIStudio.Wpf.DiagramDesigner index = container.Children.IndexOf(child); if (child.RightConnector?.BeAttachTo == true || child.BottomConnector?.BeAttachTo == true) { - index ++; + index++; } } - diagramViewModel.InsertChildCommand.Execute(new BlockContainerPara() { Item = container.DataItem, Child = item.Items.FirstOrDefault(), Container = container, Index = index }); + diagramViewModel.InsertChildCommand.Execute(new BlockContainerPara() { Item = container.DataItem, Child = item.Items.FirstOrDefault(), Container = container, Index = index }); continue; } diff --git a/Extensions/AIStudio.Wpf.Block/AIStudio.Wpf.Block.csproj b/Extensions/AIStudio.Wpf.Block/AIStudio.Wpf.Block.csproj new file mode 100644 index 0000000..41c34cb --- /dev/null +++ b/Extensions/AIStudio.Wpf.Block/AIStudio.Wpf.Block.csproj @@ -0,0 +1,34 @@ + + + + true + AIStudio.Wpf.Controls + akwkevin + https://gitee.com/akwkevin + 1.0.7 + 一个Block控件 + + + + + Dlls\net5.0-windows\AIStudio.Wpf.Block.Core.dll + + + + + + Dlls\net6.0-windows\AIStudio.Wpf.Block.Core.dll + + + + + + Dlls\net461\AIStudio.Wpf.Block.Core.dll + + + + + + + + diff --git a/Extensions/AIStudio.Wpf.Block/AssemblyInfo.cs b/Extensions/AIStudio.Wpf.Block/AssemblyInfo.cs new file mode 100644 index 0000000..8b5504e --- /dev/null +++ b/Extensions/AIStudio.Wpf.Block/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/Extensions/AIStudio.Wpf.Block/BlockTest.cs b/Extensions/AIStudio.Wpf.Block/BlockTest.cs new file mode 100644 index 0000000..ffc8036 --- /dev/null +++ b/Extensions/AIStudio.Wpf.Block/BlockTest.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using AIStudio.Wpf.DiagramDesigner; +using AIStudio.Wpf.Block.Core.ViewModels; + +namespace AIStudio.Wpf.Block +{ + public class BlockTest + { + public BlockTest() + { + BlockDesignerItemViewModel MoveNode = new MoveNode() { Name = nameof(MoveNode), Left = 28, Top = 28 }; + } + } +} diff --git a/Extensions/AIStudio.Wpf.Block/Dlls/net461/AIStudio.Wpf.Block.Core.dll b/Extensions/AIStudio.Wpf.Block/Dlls/net461/AIStudio.Wpf.Block.Core.dll new file mode 100644 index 0000000..5dfdba7 Binary files /dev/null and b/Extensions/AIStudio.Wpf.Block/Dlls/net461/AIStudio.Wpf.Block.Core.dll differ diff --git a/Extensions/AIStudio.Wpf.Block/Dlls/net5.0-windows/AIStudio.Wpf.Block.Core.dll b/Extensions/AIStudio.Wpf.Block/Dlls/net5.0-windows/AIStudio.Wpf.Block.Core.dll new file mode 100644 index 0000000..7c5abd4 Binary files /dev/null and b/Extensions/AIStudio.Wpf.Block/Dlls/net5.0-windows/AIStudio.Wpf.Block.Core.dll differ diff --git a/Extensions/AIStudio.Wpf.Block/Dlls/net6.0-windows/AIStudio.Wpf.Block.Core.dll b/Extensions/AIStudio.Wpf.Block/Dlls/net6.0-windows/AIStudio.Wpf.Block.Core.dll new file mode 100644 index 0000000..1c7f9ce Binary files /dev/null and b/Extensions/AIStudio.Wpf.Block/Dlls/net6.0-windows/AIStudio.Wpf.Block.Core.dll differ diff --git a/Extensions/AIStudio.Wpf.SFC/AIStudio.Wpf.SFC_a2dtqtuc_wpftmp.csproj b/Extensions/AIStudio.Wpf.SFC/AIStudio.Wpf.SFC_a2dtqtuc_wpftmp.csproj new file mode 100644 index 0000000..dcc2a7a --- /dev/null +++ b/Extensions/AIStudio.Wpf.SFC/AIStudio.Wpf.SFC_a2dtqtuc_wpftmp.csproj @@ -0,0 +1,235 @@ + + + AIStudio.Wpf.SFC + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\Extensions\AIStudio.Wpf.SFC\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.SFC + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_iozmnnjw_wpftmp.csproj b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_iozmnnjw_wpftmp.csproj new file mode 100644 index 0000000..7d1a01b --- /dev/null +++ b/Extensions/AIStudio.Wpf.Script/AIStudio.Wpf.Script_iozmnnjw_wpftmp.csproj @@ -0,0 +1,276 @@ + + + AIStudio.Wpf.Script + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\Extensions\AIStudio.Wpf.Script\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.Script + + + + true + AIStudio.Wpf.Controls + akwkevin + https://gitee.com/akwkevin + A.png + + + 1.0.6 + 一个Wpf的脚本生成模块 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Images/90d797c820ea33386617d32c148e1a9.jpg b/Images/90d797c820ea33386617d32c148e1a9.jpg new file mode 100644 index 0000000..b11fe82 Binary files /dev/null and b/Images/90d797c820ea33386617d32c148e1a9.jpg differ diff --git a/Images/block.gif b/Images/block.gif new file mode 100644 index 0000000..3fde2c2 Binary files /dev/null and b/Images/block.gif differ diff --git a/Images/block1.png b/Images/block1.png new file mode 100644 index 0000000..668d0a5 Binary files /dev/null and b/Images/block1.png differ diff --git a/Images/block2.png b/Images/block2.png new file mode 100644 index 0000000..f771dcb Binary files /dev/null and b/Images/block2.png differ diff --git a/Images/block3.png b/Images/block3.png new file mode 100644 index 0000000..78c47d5 Binary files /dev/null and b/Images/block3.png differ diff --git a/Images/da3cc91baa07eb81acebf9fc1246a01.jpg b/Images/da3cc91baa07eb81acebf9fc1246a01.jpg new file mode 100644 index 0000000..e2b46ac Binary files /dev/null and b/Images/da3cc91baa07eb81acebf9fc1246a01.jpg differ diff --git a/README.md b/README.md index e4f7e0e..ed8a11c 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,18 @@ 友情提示 很多朋友老问为什么编译不过去,您需要安装对应的net版本,或者修改工程的net版本,如下图。 ![输入图片说明](Images/help.png) +## 2023年7月2日更新内容(做一个Block编程画板) +先上一张效果动图,本次更新主要仿照Scratch,目前仅完成拖拽部分,逻辑部分后续完善。 +![输入图片说明](Images/block.gif) + +### 本次扩展主要内容: +### 1.Block模块,入口在文件新建下。 +![输入图片说明](Images/block2.png) +### 2.简易Block的使用: +![输入图片说明](Images/block1.png) +### 3.仿Scratch的Block的使用(完成图鉴,准备编写逻辑): +![输入图片说明](Images/block3.png) + ## 2023年5月17日更新内容(做一个画笔画板) ![输入图片说明](Images/66.gif) @@ -728,6 +740,12 @@ nuget地址:![输入图片说明](Images/nuget.png) ### 用Wpf做一个画笔画板(续5-Diagram画板)[https://www.cnblogs.com/akwkevin/p/17417546.html](https://www.cnblogs.com/akwkevin/p/17417546.html) +## 捐助 如果您觉得我们的开源软件对你有所帮助,请扫下方二维码打赏我们一杯咖啡。(可以联系我,在下面添加特别鸣谢,谢谢。) + + + + + 相关链接地址: Fluent.Ribbon: https://github.com/fluentribbon/Fluent.Ribbon