闪烁的核心图形和可可
问题描述:
我最近从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调用期间缩放以用于视网膜显示。
为视网膜显示器提供高分辨率位图解决了这个问题。