首次提交:本地项目同步到Gitea
This commit is contained in:
304
LibShapes/UML/class.puml
Normal file
304
LibShapes/UML/class.puml
Normal file
@@ -0,0 +1,304 @@
|
||||
@startuml class
|
||||
|
||||
|
||||
class ShapeEle{
|
||||
.. 属性 ..
|
||||
+int Id
|
||||
+float X
|
||||
+float Y
|
||||
+float XAdd
|
||||
+float YAdd
|
||||
+float Width
|
||||
+float Height
|
||||
+float Angle
|
||||
+ string VarName
|
||||
+ string VarValue
|
||||
.. 公开方法 ..
|
||||
+ Draw(Graphics g)
|
||||
+ GraphicsPath getGraphicsPath()
|
||||
+ getGraphicsPath getGraphicsPathNoOffsetRoute()
|
||||
+ RectangleF GetBounds()
|
||||
+ bool isContains(PointF mousePointF)
|
||||
+ bool isContains(RactangleF ract)
|
||||
+ move()
|
||||
+ resize()
|
||||
}
|
||||
|
||||
|
||||
class PointTransform{
|
||||
.. 属性 ..
|
||||
float OffsetX
|
||||
float OffsetY
|
||||
float Zoom
|
||||
.. 公开方法 ..
|
||||
+PointF TransfromToVirtualPoint(PointF)
|
||||
}
|
||||
note left of PointTransform
|
||||
这个是虚拟世界的坐标
|
||||
跟屏幕上的坐标转换的
|
||||
end note
|
||||
|
||||
|
||||
class PaperSize{
|
||||
float PaperWidth
|
||||
float PaperHeight
|
||||
float Top
|
||||
flaot Left
|
||||
float Right
|
||||
float Bottom
|
||||
int Cols
|
||||
int Rows
|
||||
float HorizontalIntervalDistance
|
||||
float VerticalIntervalDistance
|
||||
ShapeEle Shape
|
||||
}
|
||||
PaperSize o-- ShapeEle
|
||||
note right of PaperSize::Top
|
||||
模板距离纸张顶部的距离
|
||||
end note
|
||||
note right of PaperSize::Left
|
||||
模板距离纸张左边的距离
|
||||
end note
|
||||
note right of PaperSize::Cols
|
||||
列数
|
||||
end note
|
||||
note right of PaperSize::Rows
|
||||
行数
|
||||
end note
|
||||
note right of PaperSize::HorizontalIntervalDistance
|
||||
模板之间的水平间隔
|
||||
end note
|
||||
note right of PaperSize::VerticalIntervalDistance
|
||||
模板之间的垂直间隔
|
||||
end note
|
||||
|
||||
|
||||
class Shapes{
|
||||
.. 属性 ..
|
||||
+ List<ShapeEle> lstShapes
|
||||
+ PointTransform PointTransform
|
||||
+ PaperSize PaperSize
|
||||
+ Dictionary<string,string> keyvalue
|
||||
.. 方法 ..
|
||||
+ShapeEle getSelectShape()
|
||||
+List<ShapeEle> getSelectShapes()
|
||||
+DrawWithPaperBack(Graphics g, Transfrom trans)
|
||||
+Draw(Graphics g, Transfrom trans)
|
||||
+int getNextId()
|
||||
+ forward(ShapeEle shape)
|
||||
+ forwardToFront(ShapeEle shape)
|
||||
+ backward(ShapeEle shape)
|
||||
+ backwardToEnd(ShapeEle shape)
|
||||
+ ShapeGroup addGroup(List<ShapeEle> shapes)
|
||||
}
|
||||
Shapes o-- ShapeEle
|
||||
Shapes o-- PointTransform
|
||||
Shapes o-- PaperSize
|
||||
|
||||
note right of Shapes::getSelectShape
|
||||
鼠标点击下取得一个选择的图形,
|
||||
end note
|
||||
note right of Shapes::getSelectShapes
|
||||
鼠标画矩形框下选择的图形。
|
||||
end note
|
||||
note right of Shapes::DrawWithPaperBack
|
||||
绘图,连带纸张的背景。
|
||||
end note
|
||||
note right of Shapes::Draw
|
||||
绘图,不带纸张
|
||||
end note
|
||||
note right of Shapes::getNextId
|
||||
取得下一个可用的id
|
||||
end note
|
||||
|
||||
|
||||
class ShapeGroup{
|
||||
-- 属性 --
|
||||
List<ShapeEle>group
|
||||
-- 方法 --
|
||||
+Draw(Graphics g, Transfrom trans)
|
||||
+bool isContains(PointF mousePointF)
|
||||
+bool isContains(RactangleF ract)
|
||||
+move()
|
||||
+resize()
|
||||
}
|
||||
ShapeEle <|-- ShapeGroup
|
||||
|
||||
|
||||
class ShapeLine{
|
||||
-- 属性 --
|
||||
List<ShapeEle>group
|
||||
-- 方法 --
|
||||
+ Draw(Graphics g, Transfrom trans)
|
||||
+ getGraphicsPath getGraphicsPathNoOffsetRoute()
|
||||
+bool isContains(PointF mousePointF)
|
||||
+bool isContains(RactangleF ract)
|
||||
}
|
||||
ShapeEle <|-- ShapeLine
|
||||
|
||||
|
||||
class ShapeSelected{
|
||||
+ Draw(Graphics g, Transfrom trans)
|
||||
}
|
||||
ShapeEle <|-- ShapeSelected
|
||||
|
||||
class ShapeText{
|
||||
+ string PreText
|
||||
+ string SuffixText
|
||||
+ string MidText
|
||||
}
|
||||
|
||||
|
||||
class UserControlCanvas{
|
||||
-- 属性 --
|
||||
+ Shapes Shapes
|
||||
+ bool isDrawDridding
|
||||
+ int GriddingInterval
|
||||
+ bool isAlignGridding
|
||||
- ICommandRecorder commandRecorder
|
||||
- Dictionary<string,string> keyvalue
|
||||
- ShapeGroup SelectShapes
|
||||
- State state
|
||||
-- 方法
|
||||
- keyDown()
|
||||
- keyUp()
|
||||
- MouseDown()
|
||||
- MouseUp()
|
||||
- print()
|
||||
+ Undo()
|
||||
+ Redo()
|
||||
+ setVals(Dictionary<string,string> vals)
|
||||
}
|
||||
UserControlCanvas o-- Shapes
|
||||
UserControlCanvas o-- ShapeGroup
|
||||
UserControlCanvas o-- ICommandRecorder
|
||||
UserControlCanvas o-- State
|
||||
note right of UserControlCanvas::isDrawDridding
|
||||
显示网格
|
||||
end note
|
||||
note right of UserControlCanvas::GriddingInterval
|
||||
网格间隔
|
||||
end note
|
||||
note right of UserControlCanvas::isAlignGridding
|
||||
对齐网格
|
||||
end note
|
||||
note right of UserControlCanvas::print
|
||||
这里会用到双缓冲BufferedGraphics,
|
||||
首先建立双缓冲,然后提高精度
|
||||
首先绘制所有的图形
|
||||
然后绘制虚拟选择框
|
||||
然后绘制刻度表
|
||||
最后刷新双缓冲
|
||||
end note
|
||||
|
||||
|
||||
interface IInvoke{
|
||||
ExecuteCommand(Command command)
|
||||
}
|
||||
|
||||
interface ICommandRecorder{
|
||||
addCommand(Command command)
|
||||
Undo()
|
||||
Redo()
|
||||
}
|
||||
|
||||
|
||||
class CommandRecorder{
|
||||
-- 属性 --
|
||||
- List<Command>commands
|
||||
-- 方法 --
|
||||
addCommand(Command command)
|
||||
Undo()
|
||||
Redo()
|
||||
}
|
||||
ICommandRecorder <|-- CommandRecorder
|
||||
|
||||
|
||||
abstract class Command {
|
||||
ShapeEle Shape
|
||||
+Undo()
|
||||
+Redo()
|
||||
}
|
||||
|
||||
class MoveCommand{
|
||||
float oldX
|
||||
float oldY
|
||||
float newX
|
||||
flaot newY
|
||||
}
|
||||
Command <|-- MoveCommand
|
||||
|
||||
class ResizeCommand{
|
||||
float oldX
|
||||
float oldY
|
||||
float oldWidth
|
||||
float oldHeight
|
||||
float newX
|
||||
flaot newY
|
||||
float newWidth
|
||||
float newHeight
|
||||
}
|
||||
Command <|-- ResizeCommand
|
||||
|
||||
class PropertyChangedCommand{
|
||||
ShapeEle oldShape
|
||||
ShapeEle newShape
|
||||
}
|
||||
Command <|-- PropertyChangedCommand
|
||||
|
||||
abstract class CommandEx{
|
||||
Shapes Shapes
|
||||
}
|
||||
Command <|-- CommandEx
|
||||
|
||||
class AddCommand{
|
||||
float X
|
||||
float Y
|
||||
}
|
||||
CommandEx <|-- AddCommand
|
||||
|
||||
class DeleteCommand{
|
||||
}
|
||||
CommandEx <|-- DeleteCommand
|
||||
|
||||
|
||||
class ResizeStrategy{
|
||||
|
||||
}
|
||||
|
||||
abstract class State{
|
||||
-- 属性 --
|
||||
- UserControlCanvas canvas
|
||||
- PointF startPoint
|
||||
-- 构造函数 --
|
||||
State(UserControlCanvas canvas, PointF startPoint)
|
||||
-- 方法 --
|
||||
+ keyDown()
|
||||
+ keyup()
|
||||
+ LeftMouseDown()
|
||||
+ LeftMouseMove()
|
||||
+ LeftMouseUp()
|
||||
+ rightMouse()
|
||||
}
|
||||
|
||||
class StateStandby{
|
||||
|
||||
}
|
||||
State <|-- StateStandby
|
||||
|
||||
class StateCreate{
|
||||
|
||||
}
|
||||
State <|-- StateCreate
|
||||
|
||||
class StateSelected{
|
||||
|
||||
}
|
||||
State <|-- StateSelected
|
||||
|
||||
class StateRectSelected{
|
||||
|
||||
}
|
||||
State <|-- StateRectSelected
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user