diff --git a/SFMLRenderer/ISFMLRenderer.cs b/SFMLRenderer/ISFMLRenderer.cs index 0a8df47..fe27115 100644 --- a/SFMLRenderer/ISFMLRenderer.cs +++ b/SFMLRenderer/ISFMLRenderer.cs @@ -9,15 +9,19 @@ using System.Threading.Tasks; namespace SFMLRenderer { + /// + /// 定义了 SFML 渲染器的基本功能和事件, 基本上是对 的抽象 + /// 实现示例可以见 + /// public interface ISFMLRenderer { /// - /// 发生在资源首次创建完成后 + /// 发生在资源首次创建完成后, 该事件发生之后渲染器才是可用的, 操作才会生效 /// public event EventHandler? RendererCreated; /// - /// 发生在资源即将不可用之前 + /// 发生在资源即将不可用之前, 该事件发生之后对渲染器的操作将被忽略 /// public event EventHandler? RendererDisposing; @@ -62,72 +66,72 @@ namespace SFMLRenderer public uint MaxFps { get; set; } /// - /// 垂直同步 + /// 垂直同步, /// public bool VerticalSync { get; set; } /// - /// + /// /// - public void SetActive(bool active); + public bool SetActive(bool active); /// - /// + /// /// public View GetView(); /// - /// + /// /// public void SetView(View view); /// - /// + /// /// public Vector2f MapPixelToCoords(Vector2i point); /// - /// + /// /// public Vector2i MapCoordsToPixel(Vector2f point); /// - /// + /// /// public void Clear(); /// - /// + /// /// public void Clear(Color color); /// - /// + /// /// public void Draw(Drawable drawable); /// - /// + /// /// public void Draw(Drawable drawable, RenderStates states); /// - /// + /// /// public void Draw(Vertex[] vertices, PrimitiveType type); /// - /// + /// /// public void Draw(Vertex[] vertices, PrimitiveType type, RenderStates states); /// - /// + /// /// public void Draw(Vertex[] vertices, uint start, uint count, PrimitiveType type); /// - /// + /// /// public void Display(); } diff --git a/SFMLRenderer/README.md b/SFMLRenderer/README.md index 842c0f2..77db931 100644 --- a/SFMLRenderer/README.md +++ b/SFMLRenderer/README.md @@ -1,3 +1,21 @@ # SFMLRenderer 这个库封装了一个用于 WPF 的 SFML 渲染控件. + +```mermaid +classDiagram + +namespace SFMLRenderer { + class ISFMLRenderer { + <> + } + + class SFMLHwndHost + + class SFMLRenderPanel +} + +ISFMLRenderer <|.. SFMLRenderPanel +SFMLHwndHost <.. SFMLRenderPanel + +``` diff --git a/SFMLRenderer/SFMLHwndHost.cs b/SFMLRenderer/SFMLHwndHost.cs index 7068b1e..975968b 100644 --- a/SFMLRenderer/SFMLHwndHost.cs +++ b/SFMLRenderer/SFMLHwndHost.cs @@ -12,14 +12,27 @@ using System.Windows.Media; namespace SFMLRenderer { + /// + /// 原生窗口控件, 不应直接使用该类, 而是使用 或者二次封装 + /// public class SFMLHwndHost : HwndHost { private HwndSource? _hwndSource; private SFML.Graphics.RenderWindow? _renderWindow; + /// + /// 内部的 SFML 窗口对象 + /// public SFML.Graphics.RenderWindow? RenderWindow => _renderWindow; + /// + /// 窗口建立事件 + /// public event EventHandler? RenderWindowBuilded; + + /// + /// 窗口销毁事件 + /// public event EventHandler? RenderWindowDestroying; protected override HandleRef BuildWindowCore(HandleRef hwndParent) diff --git a/SFMLRenderer/SFMLRenderPanel.xaml.cs b/SFMLRenderer/SFMLRenderPanel.xaml.cs index 1edc5e1..054c737 100644 --- a/SFMLRenderer/SFMLRenderPanel.xaml.cs +++ b/SFMLRenderer/SFMLRenderPanel.xaml.cs @@ -229,7 +229,7 @@ namespace SFMLRenderer public Vector2f MapPixelToCoords(Vector2i point) => RenderWindow?.MapPixelToCoords(point) ?? default; - public void SetActive(bool active) => RenderWindow?.SetActive(active); + public bool SetActive(bool active) => RenderWindow?.SetActive(active) ?? false; public void SetView(View view) => RenderWindow?.SetView(view);