Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CGAffineTransform仅缩放宽度和高度_Ios_Swift_Core Graphics_Foundation - Fatal编程技术网

Ios CGAffineTransform仅缩放宽度和高度

Ios CGAffineTransform仅缩放宽度和高度,ios,swift,core-graphics,foundation,Ios,Swift,Core Graphics,Foundation,如何缩放cContext而不影响其原点,即仅缩放宽度和高度?如果我直接使用下面的比例,它也会缩放原点 context.scaledBy(x:2.0,y:2.0) 有没有一种方法可以构造一个仿射变换来操纵宽度和高度,而保持原点不变 我想要一个仿射翻译,它可以用于CGContext和CGRect 例如aCGRect={x,y,w,h} var t = CGAffineTransform.identity t = t.scaledBy(x: sx, y: sy) let tRect = rect.ap

如何缩放cContext而不影响其原点,即仅缩放宽度和高度?如果我直接使用下面的比例,它也会缩放原点

context.scaledBy(x:2.0,y:2.0)

有没有一种方法可以构造一个仿射变换来操纵宽度和高度,而保持原点不变

我想要一个仿射翻译,它可以用于
CGContext
CGRect

例如a
CGRect={x,y,w,h}

var t = CGAffineTransform.identity
t = t.scaledBy(x: sx, y: sy)
let tRect = rect.applying(t)
tRect
将是
{x*sx,y*sy,w*sx,h*sy}


但是我想要
{x,y,w*sx,h*sy}
。虽然可以通过计算实现,但我需要CGAffineTransform来完成此操作。

您需要平移原点,然后缩放,然后撤消平移:

import Foundation
import CoreGraphics

let rect = CGRect(x: 1, y: 2, width: 3, height: 4) // Whatever

// Translation to move rect's origin to <0,0>
let t0 = CGAffineTransform(translationX: -rect.origin.x, y: -rect.origin.y)
// Scale - <0,0> will not move, width & height will
let ts = CGAffineTransform(scaleX: 2, y: 3) // Whatever
// Translation to restore origin
let t1 = CGAffineTransform(translationX: rect.origin.x, y: rect.origin.y)

//Compound transform:
let t = t0.concatenating(ts).concatenating(t1)

// Test it:
let tRect = rect.applying(t) // 1, 2, 6, 12 as required
<代码>导入基础 导入核心图形 设rect=CGRect(x:1,y:2,宽度:3,高度:4)//随便什么 //将rect的原点移动到的平移 设t0=CGAffineTransform(translationX:-rect.origin.x,y:-rect.origin.y) //比例-不会移动,宽度和高度将 设ts=CGAffineTransform(scaleX:2,y:3)//随便什么 //翻译还原原点 设t1=CGAffineTransform(translationX:rect.origin.x,y:rect.origin.y) //复合变换: 设t=t0.串联(ts).串联(t1) //测试它: 让tRect=rect.applicating(t)//1,2,6,12,根据需要