私はこれらのオプションを使用すると、アンチエイリアスをオフにします。左側にデフォルトオプションがあります。あなたのオプションで、右側に。
これは、あなたがUIView
サブクラスを使用している場合は制御が容易です。これは私のdrawRect
です:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShouldAntialias(context, NO);
[[UIColor redColor] setStroke];
UIBezierPath *path = [self myPath];
[path stroke];
}
し、画面をキャプチャする、3210
- (void)captureScreen
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.window.bounds.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.window.bounds.size);
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *data = UIImagePNGRepresentation(image);
[data writeToFile:[self screenShotFilename] atomically:YES];
}
からあなたがCAShapeLayer
を使用している場合は、私はあなたがするので、画面上のアンチエイリアスを制御することができるとは思いませんas the documentation says:
形状はアンチエイリアス描画される
、それがラスタライズされる前に、画面空間にマップされる可能な限り保存する解像度I独立性。しかし、CoreImageフィルタなどの特定の種類の画像処理操作は、レイヤーまたはその先祖に適用されて、ローカル座標空間でのラスタライズを強制することがあります。
しかし、あなたがアンチエイリアスされていない画面のあなたのスナップショットを持っているしたい場合にかかわらず、画面上のアンチエイリアスの、あなたは日常captureScreen
にあなたのCGContextSetShouldAntialias
を挿入することができます。あなたの入力のための
- (void)captureScreen
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
UIGraphicsBeginImageContextWithOptions(self.window.bounds.size, NO, [UIScreen mainScreen].scale);
else
UIGraphicsBeginImageContext(self.window.bounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShouldAntialias(context, NO);
[self.window.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
[data writeToFile:[self screenShotFilename] atomically:YES];
}
出典
2013-03-14 19:16:02
Rob
そんな包括的な回答をいただきありがとうございます。私はラインに沿っていくつかの新しいことを学びました:) – alonjr
@Rob、なぜアンチエイリアスがその灰色の背景(左の写真)をもたらすのかアドバイスできますか?ありがとう。 – berec
@berec - これは、古い画像スナップショットをどのように作成したかのランダムなアーティファクトです。私はそれらの画像を再生成しました(上記の同じコードを使用しています)。ストロークを描くコンテキストで選択されたエイリアシングは、背景に影響しません。その古いイメージが混乱してしまった場合は、申し訳ありません。 – Rob