【问题标题】:Draw images on CGContext without initWithFrame在没有 initWithFrame 的情况下在 CGContext 上绘制图像
【发布时间】:2011-09-20 16:14:24
【问题描述】:

我目前有一个UIImage 对象,它使用initWithFrame 进行初始化,然后我在-(void)drawRect:(CGRect)rect{} 中有一些带有`CGContext.很基础。我想知道的是,我怎样才能通过例如的推动来绘制。一个按钮或任何事件(不仅在初始化时)?

我尝试将drawRect 中的代码复制到一个名为redraw 的新方法中,但这会导致一个明显的错误:

CGContextMoveToPoint:无效上下文 0x0

我只想知道如何在创建 UIView 时通过 CGContext 进行绘制。 不是,例如如何监听 UIButton 事件

谢谢。

【问题讨论】:

    标签: iphone objective-c uiview cgcontext


    【解决方案1】:

    您只能在 UIView 的 drawRect: 方法内或通过创建自己的 image 上下文进行绘制。除了drawRect: 或为 CALayer 实现绘图之外,您不能通过任何方式绘制到屏幕上。您需要相应地在视图上设置变量,然后调用setNeedsDisplay 重新绘制它。例如,在视图中添加属性@property(retain) UIImage *image;,在其上设置新图像,然后调用setNeedsDisplay(或者更好的是,实现setImage: 方法并在此处调用[self setNeedsDisplay];)。

    【讨论】:

    • 如果我经常(100hz)需要绘制一个新的矩形(只有一个彩色矩形),那么这仍然是一个选项还是我应该使用什么替代方案? (CGContext 做我需要的 - 除了重绘)
    • AFAIK iPhone 的屏幕只有 60Hz 的刷新率。无论如何,如果你需要经常画这个,你需要熟悉 CoreAnimation 并使用CADisplayLink
    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多