繁体   English   中英

创建带有抗锯齿的圆圈或磁盘以显示视网膜

Create a circle or a disk with antialiasing for retina display

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我已经使用CoreGraphic CGContextFillEllipseInRect创建了一个圆。

我正在使用这个圆圈(实际上是一个磁盘)替换thumbImageUISlider 默认情况下应用抗锯齿。

但是我的iPhone 6上的结果显然不好。 我可以清楚地看到像素,不像使用抗锯齿功能那样多,但是比普通UISlider的像素要多。

也许我做错了。 所以我的问题是,有没有办法以编程方式获得与默认用于UISlider的磁盘相同的磁盘?

编辑:

这是我创建磁盘的方法:

class func drawDisk(rgbValue:UInt32, rectForDisk: CGRect = CGRectMake(0.0, 0.0, 1.0, 1.0)) -> UIImage {
    let color = uicolorFromHex(rgbValue)
    UIGraphicsBeginImageContext(rectForDisk.size)
    let context = UIGraphicsGetCurrentContext()

    CGContextSetFillColorWithColor(context, color.CGColor)
    CGContextFillEllipseInRect(context, rectForDisk)

    let rectForCircle = CGRectMake(0.5, 0.5, rectForDisk.size.width - 1, rectForDisk.size.height - 1)
    CGContextSetLineWidth(context, 1.0)
    CGContextSetStrokeColorWithColor(context,
            UIColor.blackColor().CGColor)
    CGContextAddEllipseInRect(context, rectForCircle)
    CGContextStrokePath(context)

    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return image
}
1 个回复

问题是,如文档中所述,您在使用UIGraphicsBeginImageContext时正在创建非视网膜图形上下文:

此函数等效于将opaque参数设置为NO并将比例因子设置为1.0来调用UIGraphicsBeginImageContextWithOptions函数。

相反,您应该使用UIGraphicsBeginImageContextWithOptions创建图像上下文。 如果要支持透明性的图像(与您现在隐式执行的操作相同),可以继续为opaque参数传递NO

在大多数情况下,您可以将0.0作为比例因子。 这会将比例因子设置为设备主屏幕的比例因子。 再次,如文档中所述:

如果将值指定为0.0 ,则比例因子将设置为设备主屏幕的比例因子。


因此,简而言之,您应该像这样创建图像上下文:

UIGraphicsBeginImageContextWithOptions(rectForDisk.size, false, 0.0) // false for Swift
1 在OSX Mavericks上的Terminal.app中强制字体抗锯齿(视网膜显示)

自从在我的Retina MBP上升级到10.9以来,终端机中的“抗锯齿文字”选项不再起作用-所有字体均以任何大小抗锯齿。 有人知道一种替代此行为的方法吗? 我看到Xcode也有类似的问题/修复( 在代码编辑器中禁用Xcode抗锯齿文本? ),但是天真地尝试将该值写入com.apple.T ...

2 如何为视网膜显示创建平铺地图?

我使用cocos2d-iphone创建了一个基于图块地图的游戏,该游戏在SD(iPad 1)上完美运行,现在我想将其移植到视网膜显示屏上以在iPhone 4和iPad 3上运行,因此我创建了一个图块地图,其图块大小是SD版本的地图,并使用了双重源图像作为图块,但是它在我的游戏中不起作用,当我在i ...

3 Unity - 对象上具有抗锯齿功能的 2D 圆孔

我想在里面有精灵的空对象内添加一个洞。 这个洞是圆形的。 为了实现这一点,我将着色器添加到材质,并将材质添加到 Sprite Renderer 组件到空对象。 这是我的着色器: 这种方法的问题是圆没有抗锯齿... 所以我尝试向空对象添加一个精灵蒙版,但没有抗锯齿下界...... 我认为着 ...

4 在视网膜屏幕上对CALayer的0.5点(1像素)边框进行抗锯齿时闪烁

环顾Stackoverflow,您会发现一些代码,可让您对CALayers的边界进行抗锯齿,类似于: 但是对于视网膜显示器,最好绘制1像素宽的边框。 所以我改变了边界: 唯一的问题是,之后用户滚动时可以看到边缘“闪烁”。 绝对比不使用抗锯齿效果更好,但不如我所希望的那样平滑。 ...

9 视网膜显示和CSS +图像

我想问一下,如果我有一些图像矢量,我可以将此矢量x2调整为例如100x100px到200x200px的大小,它们是否适用于CSS: 此图像在视网膜上看起来会很好,还是没有差异? 感谢帮助。 ...

10 视网膜显示兼容性

对于我们的iPhone应用程序,我们使用50 x 50用户图像(来自facebook)。 由于其高分辨率显示,因此它适用于iPhone 3G和3GS,但不适用于iPhone 4。 对于iPhone 4,我们尝试发送100 x 100(可变高度)图像,但是由于明显的原因它无法正常工作。 任何 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM