使用原点位于中心的椭圆 WPF

2024-01-14

我有一个可以拖动、旋转和调整大小的程序System.Windows.Shapes.Ellipse in a Canvas panel.

要调整椭圆的大小并将其拖动到画布内并始终保持其居中,我需要每次纠正其原点,因为椭圆的原点位于左上角。

有办法让原点在Ellipse默认在中心?

Drag:

Canvas.SetTop(ellipse, newX - (ellipse.Height / 2));
Canvas.SetLeft(ellipse, newY - (ellipse.Width / 2));

Resize:

ellipse.Height = newHeight;
ellipse.Width = newWidth;

Rotate:

ellipse.RenderTransform = new RotateTransform(angle,(ellipse.Width/2),(ellipse.Height/2));

如果宽度和高度是固定的,最简单的解决方案是设置椭圆的RenderTransform to a TranslateTransform with X and Y设置为负偏移,分别等于椭圆宽度和高度的一半:

<Ellipse Width="100" Height="100" Fill="Red">
  <Ellipse.RenderTransform>
    <TranslateTransform X="-50" Y="-50" />
  </Ellipse.RenderTransform>
</Ellipse>

请注意,使用时需要注意RenderTransform是变换未应用于布局(并且您不能使用TranslateTransform为了LayoutTransform)。这不应该是一个问题Canvas因为它处理布局的方式,尽管其他面板可能会出现问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用原点位于中心的椭圆 WPF 的相关文章

随机推荐

  • 如何使用其他端口在 Visual Studio Code 中离线调试无服务器?

    我有两个无服务器离线 服务器 我需要同时在本地运行 所以我需要更改其中一台服务器的端口 我使用 Visual Studio Code 调试器运行服务器 服务器的配置位于 launch json 文件中 如何更改无服务器离线应用程序的端口 以
  • android.app.Application 子类,onTerminate 未被调用

    从文档中android app Application 那些需要维护全局应用程序状态的基类 我正在使用自己的子类来维护一个用于查询服务器的对象 还来自文档 onTerminate 当应用程序停止时调用 然而 onTerminate 在我的班
  • Entity Framework Core 2.0 删除记录而不是更新记录

    我认为这可能是一个错误 但我认为我可能缺少一些可以解释该行为的东西 任何帮助 将不胜感激 Technical details EF Core version Microsoft EntityFrameworkCore 2 0 1 Datab
  • 工厂女孩什么时候在数据库中创建对象?

    我正在尝试使用模拟会话FactoryGirl shoulda 它可以与固定装置配合使用 但我在使用工厂时遇到问题 我有以下工厂 用户登录名和电子邮件都有unique验证 Factory define user do u u login qu
  • 将多种内容类型发布到 Web api

    我有一个 Web api 我想发布一个图像文件 一些数据 以便在服务器收到它时正确处理它 调用代码看起来像这样 using var client new HttpClient using var content new MultipartF
  • java nio 否定 glob 模式

    fileSystem getPathMatcher glob pattern matches path getFileName 我想匹配所有不匹配 ts 的内容 java 中 glob 的语法是什么 在有人建议我使用正则表达式之前 我需要使
  • 将现有私钥导入 BKS Keystore

    我有一个由 openssl 按以下方式生成的密钥对 openssl genrsa out private key pem 2048 我将其转换为 DER 格式如下 openssl pkcs8 topk8 inform PEM outform
  • 使用 BroadcastReceiver 关闭 Activity

    我的应用程序中有一个活动 Main java 打开 我想使用广播接收器关闭该活动 如何关闭该活动 首先 您的 Main java 需要注册为接收器 您可以在 Main java 的 onResume 中注册它 Override public
  • 将网站图标添加到网站[重复]

    这个问题在这里已经有答案了 可能的重复 HTML 标题图像 https stackoverflow com questions 3103490 html title image 有人可以告诉我如何让图标出现在 PHP 的浏览器选项卡上吗 我
  • 应用商店提交错误无效的捆绑结构

    当我尝试提交之前成功提交的应用程序版本升级时 我从 XCode 8 1 收到以下错误 错误 ITMS 90171 无效的捆绑包结构 不允许使用二进制文件 Particle app Particle armv7 除了受支持捆绑包的 CFBun
  • 如何在用户键入时获取 JTextField 内容的长度?

    JTextField 有一个 keyTyped 事件 但似乎在它触发时单元格的内容尚未更改 因此 如果在这里阅读 length 总是错误的 必须有一种简单的方法来获取用户在击键后显示的长度 这可能不是最佳方式 并且已经有一段时间了 但在过去
  • 单击 div 外部 - 当 div 具有触发事件的按钮时 - angularjs

    我使用以下指令来检测何时在 div 外部进行点击 app directive clickOut function window parse return restrict A link function scope element attr
  • 其他属性的 Maven 密码加密

    我想使用 Maven 的密码加密 例如它用于 Mojo 属性的节点 我尝试将加密密码粘贴到 mojo 的正确属性中 但它将其视为纯文本 我曾是hoping我可以在 Mojo 属性的注释上设置一个属性 该属性可以解释它可以被加密 如果可以 则
  • 如何从 C# 更新文件的更改时间?

    文件可以有更改日期 该日期与上次修改日期或上次访问日期不同 更改日期通过 UI 或 NET API 不可见 有两个 Win32 函数通过HandleEx获取文件信息 http msdn microsoft com en us library
  • 如何从不同的进程向 GUI 中的槽发出信号?

    语境 在 Python 中 主线程生成第二个进程 使用多处理模块 然后启动 GUI 使用 PyQt4 此时主线程会阻塞 直到 GUI 关闭 第二个进程始终处于处理状态 理想情况下应以异步方式向 GUI 中的特定插槽发出信号 问题 Pytho
  • 从高山图像中捕获 SIGTERM

    我试图从 docker 实例捕获 SIGTERM 信号 基本上是在调用 docker stop 时 但找不到方法 因为我执行的每次尝试都有不同的结果 以下是我的设置 Dockerfile FROM gitlab gitlab runner
  • Jasper 报告空白带仍然占用空间

    我的问题是 即使该行是空白的 它仍然占用带子高度的空间 因此在下一个带子之前有比平常更大的间隙 我的 jasper 文件中的乐队如下所示
  • 使用 Delphi Tokyo 10.2 通过 GetObjectProp 获取 TextSettings.Font.Style 属性

    我使用Delphi的GetObjectProp函数来获取表单组件的属性 我获取了几个组件的所有属性 但是我无法获取TLabel等组件的TextSettings Font Style 粗体 斜体 属性例如 我需要知道组件文本是粗体还是斜体 我
  • .NET 4 缓存支持

    我了解 NET 4 Framework 内置了缓存支持 有谁有这方面的经验 或者可以提供良好的资源来了解更多信息 我指的是内存中对象 主要是实体 的缓存 以及可能使用 System Runtime Caching 我假设你正在接近this
  • 使用原点位于中心的椭圆 WPF

    我有一个可以拖动 旋转和调整大小的程序System Windows Shapes Ellipse in a Canvas panel 要调整椭圆的大小并将其拖动到画布内并始终保持其居中 我需要每次纠正其原点 因为椭圆的原点位于左上角 有办法