首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在世界坐标中使用SVG图像中的屏幕坐标的Hittest

在世界坐标中使用SVG图像中的屏幕坐标的Hittest
EN

Stack Overflow用户
提问于 2011-04-13 07:05:21
回答 1查看 1.9K关注 0票数 17

如何使用GDI+将鼠标坐标转换为世界坐标?或者为使用GDI+绘制的SVG图形获取旧的边框(甚至更好)?

不管怎么说。我一直在寻找SVG代码,发现:

http://development.mwcs.de/svgimage.html

这是第一个真正为SVG工作的Delphi组件,但我离题了。

这个组件使用GDI+来显示圆、曲线等。

GDI+使用矩阵将世界坐标、旋转和扭曲转换为屏幕坐标。

这部分我理解。您可以使用矩阵乘法进行转换。

问题出在这个上

如果我将鼠标光标指向一个闭合的形状:

  1. 我从哪里得到矩阵,它会将我鼠标的屏幕点转换成一个世界点,我可以点击到我在屏幕上看到的圆圈中?

有这么多的矩阵可供选择在所有这些GDI objects.

  • Please没有给我的东西绘制到一个位图和测试的魔术颜色在光标下,这不是我要找的。

  • 如果有一个矩阵链,我如何在正确的(倒置)中遍历它们?这样我的屏幕坐标才能正确地引导到世界坐标?

换句话说就是

从SVG图像读取的形状是被矩阵扭曲为屏幕坐标的基元。我如何从屏幕坐标反转到坐标,我可以用来查看我是否在一个形状内。

请注意,,我需要知道我处于哪个形状。

由于SVG图像的设置方式,每个形状都有一个id,我想用它来查看我用鼠标点击了哪个区域。

编辑

Alternatively

  1. 我是否可以在屏幕坐标中获得每个形状的边框,以便我可以对照它检查我的鼠标坐标。
  2. 我是否可以获得一个旧的skool GDI区域,我可以在screen
  3. 中使用它执行PtInRegion

希望你能帮助我找到所有这些扭曲的路径:-)。

EN

回答 1

Stack Overflow用户

发布于 2011-05-31 06:07:23

使用GDI+,您必须跟踪您正在做什么/已经做了什么,因为GDI+本身在绘制像素之后会忘记除像素本身之外的所有内容。SVG单元必须保持所有需要绘制所有形状和设置GDI+视口的东西的大头针。因此,从SVG库中获取您想要的信息会更容易。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5642646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档