ズーム中に CALayer のようにスムーズに描画するにはどうすればよいですか?
3 番目 (最も高い) の画像に見られるように、白い境界線が正確なanti-aliased
レンダリングで描かれています。
ただし、ラベル( を設定してもcontentScaleFactor
)も手描きの円(オンにしてもanti aliasing
)はありません。
CALayer と同じくらいスムーズにズーム係数に合わせてスケーリングする UIKit コンポーネントまたは手描きのグラフィックスのアンチエイリアス レンダリングを行うにはどうすればよいですか?
魔法は何ですか?
白い境界線は、ビューの CALayer を使用して描画されます。
self.layer.cornerRadius = frame.size.width / 2.0f ;
self.layer.borderColor = [UIColor whiteColor].CGColor ;
self.layer.borderWidth = 3.0f ;
数字はUILabelのものです
CGFloat contentScale = self.zoomScale * [UIScreen mainScreen].scale; // Handle retina
label.contentScaleFactor = contentScale;
そして与えられた:
typedef struct {
CGRect rect ;
CGColorRef color ;
} EventColor ;
4 つの円は CoreGraphics を使用して描画されます
::CGContextSetAllowsAntialiasing(context, true) ;
::CGContextSetShouldAntialias(context, true) ;
// ...
EventColor ec = ...
// ...
::CGContextSetFillColorWithColor(context, ec.color) ;
::CGContextFillEllipseInRect(context, ec.rect) ;