diff --git a/SpineViewer/src/MainForm.Designer.cs b/SpineViewer/src/MainForm.Designer.cs
index de9fcb9..fe6deff 100644
--- a/SpineViewer/src/MainForm.Designer.cs
+++ b/SpineViewer/src/MainForm.Designer.cs
@@ -339,6 +339,7 @@
spinePreviewer.Dock = DockStyle.Fill;
spinePreviewer.Location = new Point(3, 26);
spinePreviewer.Name = "spinePreviewer";
+ spinePreviewer.PropertyGrid = propertyGrid_Previewer;
spinePreviewer.Size = new Size(986, 766);
spinePreviewer.TabIndex = 0;
spinePreviewer.RenderFrame += spinePreviewer_RenderFrame;
diff --git a/SpineViewer/src/MainForm.cs b/SpineViewer/src/MainForm.cs
index 5b1caad..e7ca514 100644
--- a/SpineViewer/src/MainForm.cs
+++ b/SpineViewer/src/MainForm.cs
@@ -10,10 +10,7 @@ namespace SpineViewer
public MainForm()
{
InitializeComponent();
- propertyGrid_Previewer.SelectedObject = spinePreviewer.Property;
-
InitializeLogConfiguration();
- spinePreviewer.Property.Resolution = new(1280, 720);
spinePreviewer.StartPreview();
}
@@ -113,7 +110,7 @@ namespace SpineViewer
private void propertyGrid_PropertyValueChanged(object sender, PropertyValueChangedEventArgs e)
{
- (sender as PropertyGrid).Refresh();
+ (sender as PropertyGrid)?.Refresh();
}
#endregion
diff --git a/SpineViewer/src/SpinePreviewer.Designer.cs b/SpineViewer/src/SpinePreviewer.Designer.cs
index 0e26d8f..8290bc2 100644
--- a/SpineViewer/src/SpinePreviewer.Designer.cs
+++ b/SpineViewer/src/SpinePreviewer.Designer.cs
@@ -43,6 +43,7 @@
panel.MouseDown += panel_MouseDown;
panel.MouseMove += panel_MouseMove;
panel.MouseUp += panel_MouseUp;
+ panel.MouseWheel += panel_MouseWheel;
//
// backgroundWorker
//
diff --git a/SpineViewer/src/SpinePreviewer.cs b/SpineViewer/src/SpinePreviewer.cs
index 23bca08..14eda3c 100644
--- a/SpineViewer/src/SpinePreviewer.cs
+++ b/SpineViewer/src/SpinePreviewer.cs
@@ -13,7 +13,7 @@ namespace SpineViewer
{
public partial class SpinePreviewer : UserControl
{
- public class PreviewerProperty
+ private class PreviewerProperty
{
public const float ZOOM_MAX = 1000f;
public const float ZOOM_MIN = 0.001f;
@@ -161,9 +161,19 @@ namespace SpineViewer
}
}
- ///
- /// 帧渲染事件
- ///
+ [Category("自定义"), Description("用于显示画面属性的属性页")]
+ public PropertyGrid? PropertyGrid
+ {
+ get => propertyGrid;
+ set
+ {
+ propertyGrid = value;
+ if (propertyGrid is not null)
+ propertyGrid.SelectedObject = Property;
+ }
+ }
+ private PropertyGrid? propertyGrid;
+
[Category("自定义"), Description("帧渲染事件")]
public event EventHandler? RenderFrame;
private void OnRenderFrame(float delta) { RenderFrame?.Invoke(this, new(RenderWindow, delta)); }
@@ -171,9 +181,7 @@ namespace SpineViewer
private readonly SFML.Graphics.RenderWindow RenderWindow;
private readonly SFML.System.Clock Clock = new();
private readonly SFML.Graphics.Color BackgroundColor = SFML.Graphics.Color.Green;
-
- [Browsable(false)]
- public PreviewerProperty Property { get; }
+ private readonly PreviewerProperty Property;
public SpinePreviewer()
{
@@ -244,6 +252,12 @@ namespace SpineViewer
}
+ private void panel_MouseWheel(object sender, MouseEventArgs e)
+ {
+ Property.Zoom *= (e.Delta > 0 ? 1.1f : 0.9f);
+ PropertyGrid?.Refresh();
+ }
+
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
RenderWindow.SetActive(true);