问题标签 [nsaffinetransform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1349 浏览

objective-c - 没有使用 NSAffineTransforms?

我有一个 NSView 的子类,其中我正在绘制一个 NSImage。我正在取消使用 NSAffineTransforms 来旋转、平移和缩放图像。

大部分工作正常。但是,有时,转换似乎并没有被激活。

例如,当我调整窗口大小时,不会发生旋转变换。

当我放大图像时,它会将图像的左下角放在正确的位置,但不会放大它,但它会放大原始大小图像右侧的图像部分。如果我旋转它,它会正确缩放,但翻译错误。(交易可能是我的计算错误)

这是我的drawRect的代码:(对不起,长代码块)

我需要尽早获取所有内容的大小,以便稍后在旋转时使用它们。我不确定我是否需要保护任何这些,但我对多年的 C 持偏执...

由于我在左下角旋转,并且我希望图像被锁定在左上角,所以我需要移动图像。当我旋转一次时,图像在 +- 象限中,所以我需要将它向上移动一个视图高度,向左移动一个视图高度减去图像高度。等等

这使框架的大小正确,因此图像位于框架的左上角。如果图像大于窗口,我希望框架足够大,以便出现滚动条。如果不是,我希望框架足够大,可以到达窗口的顶部。

这段代码可能完全是历史性的,现在我看了一下......如果我旋转 90 或 270 度,这个想法是交换高度和宽度。

0 投票
2 回答
17752 浏览

objective-c - 在 NSView 中绘制图像

我有一个简单的 Obj C 程序,目前,它可以让你加载图像,绘制它,理论上应该让你缩放和旋转。我正在使用 NSAffineTranslations。

我希望图像被锁定在左上角(与左下角的 PS/PDF 标准相反),所以我使用 isFlipped,并调用 [afTrans scaleXBy:1.0 yBy:-1.0];

问题是由于某种原因,在第一次调用我的 drawRect 之后,转换不会发生。

当我加载图像时,它会出现,并且看起来正确。如果我更改窗口的大小(调用 drawRect),图像会绘制,但会颠倒和反转。这意味着转换没有生效。我第二次看不到任何数据的任何差异。

这是代码的精简版本:

ETA:这里还有一些可能相关的代码。

0 投票
3 回答
4024 浏览

objective-c - 使用或不使用 NSAffineTransform 旋转 NSImage

我在 NSView 的子类上绘制了一个 NSImage。在上一个问题中,有人帮我把它画在左上角。现在,我希望能够旋转图像。我有一个增加旋转变​​量 %4 的按钮,然后我将其乘以 -90 以找到旋转角度。然后我使用 NSAffineTransform 旋转图像,并将其转换回屏幕上。但是,它似乎并没有按照我期望的方式工作。我有两个问题。

1)当我旋转时,图像中不在前一帧的区域中的部分被正确绘制。然而,先前存在的药水仍然是原始图像。这意味着经过几次旋转后,原始直立图像有一个正方形,然后在旋转图像的下方或左侧有一个矩形。

2)当我重新调整窗口大小时,图像会以原始的直立方向(不应该)重新绘制(应该如此)。

基本上,我得出的结论是 NSAffineTransform 不像我认为的那样工作。还有其他方法可以旋转(和平移)图像吗?谢谢

大代码块:(“WORKS”和“end works”之间的代码是用于绘制图像的工作代码。它来自我之前的问题)。

[旧代码已删除,用新代码替换较低]

谢谢

编辑:多一点研究发现,我可以旋转视图,而不是做 NSAffineTtransform。这似乎效果更好。但是,我无法让翻译工作正常。下面是新代码(为了节省空间,删除了原始代码)

0 投票
1 回答
188 浏览

cocoa - 如何旋转 nscell

我正在制作 NSLevelIndicatorCell 的子类,我想垂直绘制它。这不起作用,我做错了什么?

0 投票
0 回答
311 浏览

cocoa - NSAffineTransform 内存不足

我正在使用 NSAffineTransform 来旋转/反映 NSImage,当使用更大的图像时,我遇到了错误:

我在这里转换的图像是 6,998,487 字节,大小为 4110px x 2735。NSAffineTransform 真的需要这么多内存来进行这种转换,还是我在某个地方出错了?这是我的旋转代码:

我在我的项目中使用 ARC。在此先感谢,本

0 投票
1 回答
1213 浏览

cocoa - 如何翻译和缩放 NSImage?

到目前为止,我已经构建了一个允许用户将图像拖放到 NSImageView 上的应用程序。但是,我希望能够通过简单地单击任何图像并按住鼠标按钮来移动它的位置来移动这些图像。

设置图像后如何操作 NSImageView 进行平移/缩放?那可能吗?我已经阅读了有关 NSAffineTransform 的信息,但它似乎是在创建图像本身之前移动图像。我已经在画布上有图像,我只想单击并按住图像并用鼠标移动它。请帮助任何人!

0 投票
1 回答
109 浏览

macos - 使用 isFlipped YES 调整自定义视图中的怪异大小

我很难让我的子视图正常运行。

我正在使用自动布局。我的主窗口是一个NSSplitView. 拆分视图中的视图之一是自定义视图,我在其中设置

此视图中添加的子视图显示在左上角。子视图比父视图小很多,所以底部还有一些空间。当我调整窗口(以及超级视图)大小时,问题就开始了。子视图向上移动,移出视图,如下所示。第一张图片显示子视图的顶部与父视图的顶部很好地对齐:

在此处输入图像描述

调整窗口大小后,我在顶部得到了这个:

在此处输入图像描述

这不应该发生;如果有的话,子视图应该被剪裁在底部。子视图的左上角应始终保持在父视图的左上角。

我确定我在某处犯了错误——有人认出这种行为吗?恐怕我前一段时间把事情搞砸了,不知道去哪里找。任何帮助表示赞赏!

0 投票
1 回答
1949 浏览

ios - 有没有办法从 CGAffineTransform 制作 NSAffineTransform?

我正在尝试将 iOS 代码转换为 OSX 代码,并且在图形移植方面遇到了一些困难。

在iOS下我有这个:

这完美地工作......然后我为OSX重写了这种方式:

而这并不相同。有谁知道问题出在哪里?!

任何形式的帮助都非常感谢!

0 投票
1 回答
692 浏览

objective-c - 使用 NSAffineTransform 旋转 NSImage 会产生两倍大小的文件

我正在使用以下代码翻转(旋转 180 度)一个NSImage. 但是新图像在保存到磁盘时是原始图像的两倍大小(MB,而不是尺寸)。我希望它与原版大致相同。我怎样才能做到这一点?

我用来将图像保存到磁盘的代码:

提前致谢!

0 投票
1 回答
112 浏览

objective-c - NSAffineTransform 在 Mac OS X 10.11 中是否有不同的坐标系?

我的项目在 Mac OSX 10.10/10.9 上运行良好,但在 10.11 中使用以下代码无法正常运行:

当我改变这个 [transform translateXBy:-bound.origin.x yBy:-bound.origin.y];

[转换 translateXBy:bound.origin.x yBy:bound.origin.y];

该应用程序在 OSX 10.11 上正常工作,但在 OSX 10.10/10.9 上不正确...

我不知道为什么,NSAffineTransform 在最新的 Mac OS X 10.11 中是否有不同的坐标系?如何解决此问题以使应用程序与 10.10/9 和 10.11 兼容?谢谢。