2015-02-09 128 views
0

我最近從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方法中缺少一些設置/狀態調用?

回答

1

好的,這裏是解決方案:我畫了很多位圖。這些位圖必須在drawRect調用期間縮放以用於視網膜顯示。

爲視網膜顯示器提供高分辨率位圖解決了這個問題。