deaktivieren Sie anti-aliasing für UIBezierPath
Brauche ich zum Rendern UIBezierPaths ohne anti-aliasing und dann speichern Sie Sie als PNG zu behalten die volle pixel-Darstellungen (zum Beispiel, nicht zulassen, JPEG dreck das Bild oben). Ich habe versucht, den Aufruf der CG-Funktionen im folgenden kurz vor und streichelte die UIBezierPaths, aber es scheint keine Auswirkungen auf die resultierende gerenderten Bild. Die Pfade werden immer noch gerendert mit anti-aliasing (also geglättet).
CGContextSetShouldAntialias(c, NO);
CGContextSetAllowsAntialiasing(c, NO);
CGContextSetInterpolationQuality(c, kCGInterpolationNone);
Alle trifft, wäre sehr dankbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich verwenden Sie diese Optionen, es schaltet antialiasing. Auf der linken Seite ist mit den Standard-Optionen. Auf der rechten Seite, mit Ihrer Optionen.
Dies ist leicht zu kontrollieren, wenn Sie mit einem
UIView
Unterklasse. Dies ist meindrawRect
:Und auf dem Bildschirm erfassen, aus Wie man einen screenshot programmgesteuert
Wenn Sie einen
CAShapeLayer
, dann denke ich nicht, dass Ihnen die Kontrolle über die Kantenglättung auf dem Bildschirm, weil wie die Dokumentation sagt:Aber, unabhängig von dem Anti-Aliasing auf dem Bildschirm, wenn Sie wollen, zu Ihrem Schnappschuss des Bildschirms nicht geglättet, Sie können legen Sie Ihre
CGContextSetShouldAntialias
in diecaptureScreen
routine:Wo sind Sie immer
c
aus? Sind Sie sicher, dassc
bezieht sich auf die gleiche Sache wieUIGraphicsGetCurrentContext()
in der Zeichnungs-Zyklus, den Sie verwenden[UIBezierPath stroke]
? Es ist schwer zu sagen, aus dem obigen Beispiel.Wenn Sie sicher sein wollen, dass Sie die Zeichnung zu dem gleichen Zusammenhang, die Sie konfigurieren, Holen die
CGPath
von derUIBezierPath
, und ziehen Sie es direkt: