LunarPresentation/Expressions/CanvasExpression.cs

(开头部分) 6KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Xml;
using SHomeWorkshop.LunarPresentation.Interfaces;
using SHomeWorkshop.LunarPresentation.Widegets;

namespace SHomeWorkshop.LunarPresentation.Expressions
{
    /// <summary>
    /// 这是一个中间类。
    /// 是为“要嵌入子面板的控件”准备的包装类——但不直接包括子面板。
    /// 为使公式中可以嵌入子面板或其它内容,此类的Child是一个Canvas,
    /// </summary>
    public abstract class CanvasExpression : Expression, ICollapsed
    {
        public CanvasExpression(SubPanel rootPanel, SubPanel parentPanel, Editor editor)
            : base(rootPanel, parentPanel, editor)
        {
            this.basePanel = new Canvas();
            //this.basePanel.Focusable = false;
            this.mainBorder.Child = basePanel;

            //为鼠标提供的矩形。
            baseRectangle = new Rectangle();
            baseRectangle.Cursor = System.Windows.Input.Cursors.Hand;
            baseRectangle.Stroke = Brushes.Transparent;
            baseRectangle.Fill = Brushes.Transparent;
            baseRectangle.MouseRightButtonDown += new MouseButtonEventHandler(baseRectangle_MouseRightButtonDown);
            baseRectangle.MouseLeftButtonDown += new MouseButtonEventHandler(baseRectangle_MouseLeftButtonDown);
            baseRectangle.MouseLeftButtonUp += new MouseButtonEventHandler(baseRectangle_MouseLeftButtonUp);

            basePanel.Children.Add(baseRectangle);
            Canvas.SetZIndex(baseRectangle, 0);

            this.basePanel.SizeChanged += new System.Windows.SizeChangedEventHandler(basePanel_SizeChanged);

            this.subPanels = new List<SubPanel>();
        }

        public UIElementCollection Children
        {
            get { return this.basePanel == null ? null : this.basePanel.Children; }
        }

        void baseRectangle_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            // 接收拖动来的公式。
            Globals.DropExpression(this);
        }

        void baseRectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            //准备拖动公式。
            Globals.dragSourceExpression = this;
            this.Editor.SelectedExpression = this;
            e.Handled = true;
        }
后面还有 150 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。