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);