闪烁的核心图形和可可

问题描述:

我最近从Carbon 32bit转换到Cocoa 64bit。闪烁的核心图形和可可

当用ctrl-MouseWheel进行放大和缩小时,我的窗口中出现白色闪烁。另外,图形性能很低。

在碳,我得到我的图形上下文与

CGrafPtr port = GetWindowPort(window); 
QDBeginCGContext(port, &contextRef); 

可可,我在drawRect方法使用

CGContextRef myContext = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; 

。经由setNeedsDisplay:YES重复图

runLoopTimerRef = CFRunLoopTimerCreate(...); 
CFRunLoopAddTimer(CFRunLoopGetCurrent(), runLoopTimerRef, kCFRunLoopCommonModes); 

另外我设置一个计时器以每秒25帧。我需要每次重绘整个内容。

几乎所有绘图都是使用CoreGraphics(CGContext ...调用等)进行的。

与碳相比,可可的东西真的很慢(对鼠标点击的反应被延迟)。

当我在drawRect方法设置

[self setOpaque:YES]; 

,闪烁颜色变成黑色而不是白色。

没有图层或后缓冲区。

任何想法可能是错误的?我的drawRect方法中缺少一些设置/状态调用?

好的,这里是解决方案:我画了很多位图。这些位图必须在drawRect调用期间缩放以用于视网膜显示。

为视网膜显示器提供高分辨率位图解决了这个问题。