Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Objective c CGContext-“CGContext”;“模”;绘画_Objective C_Core Graphics_Cgcontext - Fatal编程技术网

Objective c CGContext-“CGContext”;“模”;绘画

Objective c CGContext-“CGContext”;“模”;绘画,objective-c,core-graphics,cgcontext,Objective C,Core Graphics,Cgcontext,假设我想在给定的矩形中绘制自定义视图(例如,100 x 100像素)。我的自定义视图的内容可能大于100 x 100。取而代之的是一些没有绘制的内容,我想绘制100 x 100区域内的所有内容。例如,通常位于(125,140)的点现在将在点(25,40)处绘制 是否有任何方法可以做到这一点,而无需(主要)修改图形代码?请记住,我还绘制了更复杂的形状,如贝塞尔路径。也许您可以通过缩放图形空间 e、 十, 编辑: 正如Codo在下面所建议的,您可能正在寻找将上下文的坐标空间偏移某个x/y值的坐标空间

假设我想在给定的矩形中绘制自定义视图(例如,100 x 100像素)。我的自定义视图的内容可能大于100 x 100。取而代之的是一些没有绘制的内容,我想绘制100 x 100区域内的所有内容。例如,通常位于(125,140)的点现在将在点(25,40)处绘制


是否有任何方法可以做到这一点,而无需(主要)修改图形代码?请记住,我还绘制了更复杂的形状,如贝塞尔路径。

也许您可以通过缩放图形空间

e、 十,

编辑:


正如Codo在下面所建议的,您可能正在寻找将上下文的坐标空间偏移某个x/y值的坐标空间。

我猜ryyst更喜欢CGContextTranslateCm,它可以实现100像素的偏移(而不是缩放输出)。@Codo是的,我想您是对的。更新了答案。谢谢。@Codo,Sam:我举的例子的意思是,(25,40)和(125,140)以及(25,1240)将在同一点上绘制。这就是为什么我称之为“模”绘图。你可以用不同的偏移量多次绘制内容,每次都将其剪切到目标矩形上。但总的来说,这是一个奇怪的要求。你能提供一个你想要实现的更大的背景吗?纹理(例如,制作无缝纹理,例如在模型上制作包裹到正确起点/终点的纹理)和一般的平铺、背景等都是很常见的事情
CGFloat sx, sy;
sx = self.frame.size.width / desiredWidth;
sy = self.frame.size.height / desiredHeight;

CGContextScaleCTM(context, sx, sy);