当前位置: 首页 > 知识库问答 >
问题:

C#WPF--鼠标单击从单击中心生成形状

翟淮晨
2023-03-14

我正在开发一个实践应用程序,当你在画布内单击时,它会将蓝色方块添加到画布中。其中一个要求是在该点添加形状,鼠标代表新形状的中心。

默认情况下,鼠标的单击点将位于正方形的左上角。有没有办法让正方形从鼠标点击的中心而不是右上角生成?

这是我目前将我的方块添加到画布的方式:

    private void canvasArea_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {

        Shape Rendershape = null;

        switch (Shape1)
        {
            case SelectedShape.Rectangle:
                Rendershape = new Rectangle() 
                { 
                    Fill = Brushes.Blue, 
                    Height = num1, 
                    Width = num2
                };
                break;
            default:
                return;
        }

        Canvas.SetLeft(Rendershape, e.GetPosition(canvasArea).X);
        Canvas.SetTop(Rendershape, e.GetPosition(canvasArea).Y);
        canvasArea.Children.Add(Rendershape);
    }

共有1个答案

贲绪
2023-03-14

只需将矩形的宽度和高度移动一半,请参见以下代码:

Canvas.SetLeft(Rendershape, e.GetPosition(canvasArea).X - ( Rendershape.Width / 2.0 ) );
Canvas.SetTop(Rendershape, e.GetPosition(canvasArea).Y - ( Rendershape.Height / 2.0 ) );
 类似资料:
  • 我正在Silverlight中构建应用程序,现在我遇到了事件问题。在应用程序中,我必须绘制多边形,其中每个多边形 其中鼠标左键事件应该是在点击位置添加图像,鼠标右键事件应该是带有单个菜单项的上下文菜单。在菜单项上点击应该会显示一些简短的信息。 这是我有问题的地方。当我点击上下文菜单中的某个项目时,如果该菜单项仍然在多边形代码上,还可以检测鼠标左键事件并添加图像。 我想不添加图像时,菜单项被点击,只

  • 问题内容: 如标题所示,我很难在JApplet中绘制一些矩形(填充的)。确切的目标是拥有一张50x50的表格,并在您 点击目标单元格时将其填充(可以通过绘制一个填充的矩形来完成)。我已经完成了有关起点坐标的数学运算, 但是由于某些原因,我无法在MouseClicked方法中绘制新矩形。有什么建议? 问题答案: 这是一个相对简单的概念(没有冒犯性)。 首先,请勿将代码与JApplet和混合使用JFr

  • 我的WPF-App的主窗口上有许多按钮。这些按钮的命令应该具有相同的实现/功能,但根据按下的按钮,函数访问的文件/路径会发生变化。如何在不使用按钮单击事件处理程序(Windows表单)的情况下检测从ViewModel单击了哪个按钮? 下面是类RelayCommand的实现: 以下是ViewModel中命令的代码:

  • 问题内容: 在我的三个按钮上,鼠标=中键单击和=右键单击。 两键鼠标就是这种情况吗? 谢谢 问题答案: 为了避免任何歧义,请使用SwingUtilities中的实用程序方法:

  • 我初始化了一些元素,但不是我的锚窗格: 但是当我尝试单击MenuBar或List View时,它不起作用。例如,在这种情况下,我可以单击按钮(可能),因为它是我在AnchorPane构造函数中初始化的最后一个元素。我不能使用BorderPane或任何其他布局,因此我需要找到具有此配置的解决方案。这些是我的fxml文件: list.fxml 菜单栏。fxml rea.fxml 按钮fxml text

  • 考虑一个,下面是它的 双击后,我得到了以下令人费解的结果 而不是预期的 显然,在双击过程中,在所述双击之前单击一次。为什么会这样? rough.java Env: openjdk 15.0.2 2021-01-19 openjdk运行时环境(构建15.0.2 7-27) openjdk 64位服务器虚拟机(构建15.0.2 7-27,混合模式,共享) Windows 10