【问题标题】:CGContext - "modulo" drawing?CGContext - “模”绘图?
【发布时间】:2011-04-17 12:58:44
【问题描述】:

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

有什么方法可以做到这一点而不必(主要)修改绘图代码?请记住,我还会绘制更复杂的形状,例如贝塞尔路径。

【问题讨论】:

    标签: objective-c core-graphics cgcontext


    【解决方案1】:

    也许您可以通过CGContextScaleCTM(...) 缩放绘图空间。

    例如

    CGFloat sx, sy;
    sx = self.frame.size.width / desiredWidth;
    sy = self.frame.size.height / desiredHeight;
    
    CGContextScaleCTM(context, sx, sy);
    

    编辑:

    正如 Codo 下面建议的那样,您可能正在寻找 CGContextTranslateCTM(...),它会将您的上下文的坐标空间偏移一些 x/y 值。

    【讨论】:

    • 我猜 ryyst 宁愿寻找 CGContextTranslateCTM,它可以实现 100 像素的偏移量(而不是缩放输出)。
    • @Codo 是的,我认为你是对的。更新了答案。谢谢。
    • @Codo, Sam:我的例子的意思是点 (25, 40) 和 (125, 140) 和 (25, 1240) 将被绘制在同一个位置。这就是为什么我称它为“模”绘图。
    • 您可以使用不同的偏移量多次绘制内容,然后每次都将其剪辑到目标矩形。但总的来说,这是一个奇怪的要求。您能否更深入地了解您想要实现的目标?
    • 纹理(例如制作无缝纹理,例如制作环绕模型以正确起点/终点的纹理)以及一般的平铺、背景等是很常见的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多