我有一个IKImageView,我把CGImages(我从NSImages制作)放到它上面。但是,正常的200DPI 8.5/11页面需要3秒钟才会出现,一次出现在边上的2英寸(屏幕)的矩形中。这真的很烦人。有没有解决的办法?IKImageView波涛汹涌?
另外,有没有办法来双缓冲视图?有2个IKImageViews并绘制成一个,然后显示它?
ETA: 倍增我scrollviews(里面ikimageviews),然后绘制放进去,然后取消隐藏他们,似乎并没有帮助...或者,也许它帮助了一点,但不多
我做了一些闲逛的乐器,并发现了大量的工作,似乎在向的memcopy被正在做:
22 commpage [libSystem.B.dylib] 78.0 __memcpy
21 ImageIO 37.0 CGImageReadGetBytesAtOffset
20 ImageIO 37.0 CGImageReadSessionGetBytes
19 ImageIO 37.0 myTIFFReadProc
18 libTIFF.dylib 37.0 TIFFReadRawStrip1
17 libTIFF.dylib 37.0 TIFFFillStrip
16 libTIFF.dylib 37.0 _cg_TIFFReadEncodedStrip
15 ImageIO 37.0 copyImageBlockSetTIFF
14 ImageIO 37.0 ImageProviderCopyImageBlockSetCallback
13 CoreGraphics 37.0 CGImageProviderCopyImageBlockSet
12 CoreGraphics 37.0 img_blocks_create
11 CoreGraphics 37.0 img_blocks_extent
10 CoreGraphics 37.0 img_interpolate_extent
9 CoreGraphics 37.0 img_data_lock
8 CoreGraphics 37.0 CGSImageDataLock
7 libRIP.A.dylib 37.0 ripc_AcquireImage
6 libRIP.A.dylib 37.0 ripc_DrawImage
5 CoreGraphics 37.0 CGContextDrawImage
4 ImageKit 37.0 -[IKImageLayer drawInContext:]
3 QuartzCore 37.0 tiled_layer_render(_CAImageProvider*, unsigned int, unsigned int, unsigned int, unsigned int, void*)
2 QuartzCore 37.0 CAImageProviderThread(void*)
1 libSystem.B.dylib 37.0 _pthread_wqthread
0 libSystem.B.dylib 37.0 start_wqthread
我不知道是什么,告诉我,虽然...
编辑:为了记录,问题是不是数据大小。我有一个旧版本的程序,使用不推荐的quickdraw方法调用。当我将图像放大到300%时,所以一个屏幕像素=一个图像像素,因此它需要使用整个图像,它仍然沿着一页一页的方向正确拉链。
我被最初写这个的人所嘲笑,因为他的版本在他古老的10.3 G5版本上移动速度比在我的最新英特尔盒子上移动得快。通过至少一个假设这些是在RGB颜色的10
你是如何创建NSImage和CGImageRef的? – ergosys 2010-08-08 06:34:10
最初,我正在从扫描仪的位图数据中提取图像。目前,我似乎将它放入一个CGImageProvider,从中获取一个CGImage,将该图像放入一个CGImageDestination转换为NSData,并使用该数据创建一个NSImage。现在,我看着它,它看起来非常愚蠢......人力资源管理。 – 2010-08-09 13:39:30
你解决了你的问题?我有同样的问题 – 2015-09-23 05:50:45