iOS:抗锯齿失败(CALayer中的PNG)

P i*_*P i 3 antialiasing calayer ios

我试图在屏幕上绘制这个图像:

src_image分别

这是代码:

        CALayer* dullLayer = [CALayer layer];
        {                
            dullLayer.frame = CGRectMake(0,0,BUTTON_SIZE,BUTTON_SIZE);

            dullLayer.position = CGPointFromPoint2D( btnCenter );

            dullLayer.opacity = topQuadrant ? 1.0 : 0.5;


            [wheelLayer addSublayer: dullLayer];
        }


        UIImage* test = [UIImage imageNamed: @"OuterButton_Dull.png"];

        dullLayer.contents = (id) [test CGImage];
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

render_fail

是什么赋予了?为什么边缘如此锯齿?将此与罗马数字图像形成对比,罗马数字图像以完全相同的方式合成到屏幕上.

我试过了

            dullLayer.edgeAntialiasingMask = 0x0f; // binary 1111
Run Code Online (Sandbox Code Playgroud)

无济于事.

编辑:http://lists.apple.com/archives/cocoa-dev/2008/Feb/msg02070.html

Des*_*ond 6

如果您发布的结果图像与屏幕上显示的尺寸相同,那么您只是使用太大的图像.PNG图像不是矢量图像,因此将其缩小将始终产生一些混叠; 你进一步缩小它变得越糟糕.抗锯齿在这种情况下效果有限.

您没有看到数字图像的事实部分是因为它不包含任何精细,高对比度,像其他图像那样的线条,部分原因可能是因为您使用较小的图像.

如果您将原始图像作为矢量图像,请尝试将其缩小到正确的大小,然后再将其转换为PNG.如果您在应用中的其他位置需要更高分辨率的版本,请考虑创建多个PNG,每个PNG具有不同的分辨率.

如果您没有将原始图像作为矢量图像,则应尝试查找替换图像.网上有免费剪贴画文件的几个很好的来源,例如http://www.openclipart.org/http://www.clker.com/.