【问题标题】:Draw portion of image in CGBitmapContext在 CGBitmapContext 中绘制图像的一部分
【发布时间】:2010-10-05 23:41:53
【问题描述】:

我创建了一个 256 x 256 的 CGBitmapContext 并且我有一个 CGImageRef 我想将它绘制到这个上下文中。我的目标是裁剪图像(并最终创建图像的图块),但如果我使用 CGContextDrawImage,Core Graphics 会缩放图像以适应上下文。

所以问题是,我如何确保只有一部分CGImageRef 被绘制到CGBitmapContext 中(无缩放)?

【问题讨论】:

    标签: cocoa macos core-graphics


    【解决方案1】:

    CGContextDrawImage 采用CGRect 参数。听起来您正在超越上下文的界限。相反,请尝试传递图像的边界,适当偏移以绘制所需的部分。

    【讨论】:

    • 例如,要从 (10, 20) 开始绘制 32x32 的源图像块,您可以:CGContextDrawImage(theContext, CGRectMake(10, 20, 32, 32), theImage);
    • @Jonathan Grynspan:不,这会缩放图像。假设源图像为 1024x1024,并且您希望右下角 256x256 角填充上下文。那我想你会说CGContextDrawImage(context, CGRectMake( -768, 0, 1024, 1024 ), theImage)
    • 呃...是的。我在想什么?我每天都用石英!要裁剪,需要先用CGContextClipToRect()设置上下文的裁剪区域。
    • 问题并不完全清楚,但我的解释是,bare_nature 想要剪切到上下文的边界,在这种情况下不需要剪切区域。
    • 感谢 cmets。这正是我所做的,但我犯了一个初学者错误,使用 NSImage 的 -size 来确定它的宽度和高度,这并不一定会给你以像素为单位的宽度和高度。现在一切正常。此外,在我的情况下不需要剪辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多