- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我通过 ray wenderlich 学习 Core Graphic 时,
一步是转换 UIBezierPath,var transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
,
不知道为什么后面的步骤是transform = transform.translateBy(x: 15, y: 30)
?
我不知道 x 和 y 位置是如何计算出来的。
通过打印 UIBezierPath currentPoint print(medallionPath.currentPoint)
,我认为宽度应该是 (x1 - x2) * 0.5
,高度应该是 y1 - y2
,真不知道为什么会这样
(x: 15, y: 30)
完整代码如下,已在 Playground 中测试
let size = CGSize(width: 120, height: 200)
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
let context = UIGraphicsGetCurrentContext()!
//Gold colors
let darkGoldColor = UIColor(red: 0.6, green: 0.5, blue: 0.15, alpha: 1.0)
let midGoldColor = UIColor(red: 0.86, green: 0.73, blue: 0.3, alpha: 1.0)
let medallionPath = UIBezierPath(ovalIn: CGRect(x: 8, y: 72, width: 100, height: 100))
print(medallionPath.currentPoint)
// (108.0, 122.0)
print(medallionPath.bounds)
// (8.0, 72.0, 100.0, 100.0)
context.saveGState()
medallionPath.addClip()
darkGoldColor.setFill()
medallionPath.fill()
context.restoreGState()
// question
var transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
// transform = transform.translatedBy(x: 15, y: 30)
medallionPath.lineWidth = 2.0
//apply the transform to the path
medallionPath.apply(transform)
print(medallionPath.currentPoint)
// (86.4, 97.6)
print(medallionPath.bounds)
// (6.4, 57.6, 80.0, 80.0)
medallionPath.stroke()
//This code must always be at the end of the playground
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
最佳答案
transform = transform.translatedBy(x: 15, y: 30)
是一个翻译。它将整个路径向右移动 15
向下 30
.您的问题是魔数(Magic Number) 15
在哪里?和 30
来自。
奖章图有一个尺寸为 100
的圆x 100
从位置 (8, 72)
开始由这行代码建立:
let medallionPath = UIBezierPath(ovalIn: CGRect(x: 8, y: 72, width: 100, height: 100))
代码然后通过将原始路径缩放 0.8
添加一个内环, 所以它将是一个 80 x 80
圆圈。为了让这个小圆环的中心与大圆的中心对齐,它需要额外偏移 10
在水平和垂直方向上。 (较小的圆圈是 20
水平和垂直较小,因此将它移动 1/2
的 20
使其正确对齐)。然后目标是将其定位在 (18, 82)
。与 width: 80, height: 80
.
因此,我们需要在 X 和 Y 方向上应用平移(移动),以便在缩放路径时我们最终得到锚定在 (18, 82)
的路径。 .棘手的一点是缩放应用于移位值,因此也必须考虑到这一点。
因此,我们从 8
的 X 位置开始, 我们想应用一些翻译值 dx
这样当结果按 0.8
缩放时我们最终得到值 18
:
(8 + dx) * 0.8 = 18
求解dx
:
dx = (18 / 0.8) - 8
dx = 14.5
与 Y 类似,我们从 72
的 Y 位置开始并想申请翻译 dy
这样当它按 0.8
缩放时我们最终得到 82
:
(72 + dy) * 0.8 = 82
求解dy
:
dy = (82 / 0.8) - 72
dy = 30.5
因此,数学上正确的翻译是 (14.5, 30.5)
:
transform = transform.translatedBy(x: 14.5, y: 30.5)
Ray Wenderlich 四舍五入为 (15, 30)
由于某些只有他们知道的原因(也许是因为整数在代码中看起来更好?)。有可能他们没有费心做数学运算,只是尝试值直到它看起来正确。
关于iOS Core Graphic,如何计算CGAffineTransform(scaleX offset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57841983/
看来 OFFSET由于性能低下,不建议在处理大记录时使用类似 WHERE id < x LIMIT y 的东西. 如果是这种情况,为什么 OFFSET 存在,它还有其他用途吗? 最佳答案 从概念上讲,
我用过 objdump -M intel -d test 和 objdump -d test 使用 gcc 686-elf 交叉编译器反汇编一个非常简单的 for 循环。在这两种情况下,我都会得到以下
我正在尝试遵循本指南: https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html但我不明白为什么
我正在尝试遵循本指南: https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html但我不明白为什么
这个问题已经有答案了: MySQL Data - Best way to implement paging? (9 个回答) 已关闭 3 年前。 我是 SQL 世界的新手。 现在,我有以下查询: SE
托管我的db 的服务器位于美国。当我向 db 添加项目时,我希望使用 Australia/Sydney 时间存储时间。无论用户在哪个国家/地区,如果他们检索此记录,都应使用 Australia/Syd
我有一个 周边其中也有一些图像,和一段文字。 都是inline-block .每当 H2 延伸到两行时,下一个 是抵消。以下是屏幕截图。 HTML:
我正在尝试使用时区偏移量和 UTC 时间戳来调整时间。 我正在运行以下代码: var date = { utc: '2013-10-16T21:31:51', offset: -480
我不应该在我的应用程序中使用 jQuery,但我有一个场景,我需要元素的偏移量,而不是使用 $(element).offset() 我已经使用了 angular.element(element).of
我有一个包含 ID、NAME、PRICE 和 DATE 列的表。 我正在尝试编写一个分页式导航,因为表中有很多条目,所以查看整个 SELECT 的输出变得不舒服。 我写了以下请求: SELECT id
我现在已经多次看到提到的这段代码,执行 Max(a+1, a-1) 有什么意义?一开始我以为可能是为了防止下溢,但是在那种情况下不防止下溢真的没有意义。 最佳答案 谷歌搜索让我怀疑这可能是由某些(可能
我正在尝试创建一种将时间从一个时区转换为另一个时区的小方法。我认为这很简单,但是当我部署它时我得到了这个错误 The UTC Offset of the local dateTime paramete
我有一个相当复杂的 SQL 查询,涉及从大量连接返回大约 20 列,用于在 UI 中填充结果网格。它还使用几个 CTE 来预过滤结果。我在下面包含了查询的近似值(我已经注释掉了修复性能的行) 随着数据
所以我试图减去 datetime 对象。我使用 dateutil.parser 获得了一个,另一个来自 datetime.now()。我不断得到一个 TypeError: can't subtract
所以我试图减去 datetime 对象。我使用 dateutil.parser 获得了一个,另一个来自 datetime.now()。我不断得到一个 TypeError: can't subtract
我有一个 Pandas 数据框: name my_timestamp ------------------------------------------ 0 a1 201
我只是 Bootstrap 4 的初学者。 我最近才开始学习它,很遗憾,我已经遇到了问题。我修改了 Bootstrap 4 手册本身的一些代码。然而,它惨遭失败,偏移量无法正常工作。代码非常简单,但不
我尝试使用 R 进行回归。我有以下代码,导入 CSV 文件没有问题 dat <- read.csv('http://pastebin.com/raw.php?i=EWsLjKNN',sep="
假设我有 search.php 和 edit.php。在 search.php 中,他们可以删除和更新一些记录。如果用户单击“更新”按钮,系统会将用户重定向到另一个名为 edit.php 的页面。我成
我正在使用流行的 css hack 在 Internet Explorer 8 中启用边框半径,可在此处找到:( Curved-corner-border-radius-cross-browser)。
我是一名优秀的程序员,十分优秀!