/* ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. */
CGContextRef currentContext = UIGraphicsGetCurrentContext();
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΈ. */
CGContextSetLineWidth(currentContext,
5.0f);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π»ΠΈΠ½ΠΈΡ. */
CGContextMoveToPoint(currentContext,
50.0f,
10.0f);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π»ΠΈΠ½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ. */
CGContextAddLineToPoint(currentContext,
100.0f,
200.0f);
/* ΠΠ»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ²Π΅Ρ, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ
ΠΌΠΎΠΌΠ΅Π½Ρ. */
CGContextStrokePath(currentContext);
}
ΠΠ°ΠΏΡΡΡΠΈΠ² ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠ΅ iOS, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠ°ΠΊ Π½Π° ΡΠΈΡ. 17.17.
Π ΠΈΡ. 17.17. Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅
ΠΡΠΈΠ²Π΅Π΄Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ ΡΠ°Π½Π΅Π΅, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° CGContextAddLineToPoint ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ Π΄Π°Π½Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ. Π ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· ΡΠΎΡΠΊΠΈ (20; 20) Π² ΡΠΎΡΠΊΡ (100; 100), Π° ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· ΡΠΎΡΠΊΠΈ (100; 100) Π² ΡΠΎΡΠΊΡ (300; 100)? ΠΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π²Π΅ΡΡΠΈΡ, ΡΡΠΎ, Π½Π°ΡΠΈΡΠΎΠ²Π°Π² ΠΏΠ΅ΡΠ²ΡΡ Π»ΠΈΠ½ΠΈΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΏΠ΅ΡΠΎ Π² ΡΠΎΡΠΊΡ (100; 100) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ CGContextMoveToPoint, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΡ Π² ΡΠΎΡΠΊΡ (300; 100), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ CGContextAddLineToPoint. ΠΠ°, ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ Π²ΡΠ·ΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ CGContextAddLineToPoint Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π»ΠΈΠ½ΠΈΠΈ, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π²ΡΠΏΡΡΡΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΏΠ΅ΡΠΎΠΌ, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΡΠ°Π²ΠΈΡ ΠΏΠ΅ΡΠΎ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΎΡΡΠΈΡΠΎΠ²Π°Π½ (ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ). ΠΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π² Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΊΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π΅ΡΠ΅ ΡΠ°Π· Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ CGContextAddLineToPoint, ΡΠΎΠΎΠ±ΡΠΈΠ² Π΅ΠΉ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
β (void)drawRect:(CGRect)rect{
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΡ. */
[[UIColor brownColor] set];
/* ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. */
CGContextRef currentContext = UIGraphicsGetCurrentContext();
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΉ. */
CGContextSetLineWidth(currentContext,
5.0f);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π»ΠΈΠ½ΠΈΡ. */
CGContextMoveToPoint(currentContext,
20.0f,
20.0f);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π»ΠΈΠ½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ. */
CGContextAddLineToPoint(currentContext,
100.0f,
100.0f);
/* ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π»ΠΈΠ½ΠΈΡ Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ. */
CGContextAddLineToPoint(currentContext,
300.0f,
100.0f);
/* ΠΠ»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ²Π΅Ρ, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ
ΠΌΠΎΠΌΠ΅Π½Ρ. */
CGContextStrokePath(currentContext);
}
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡ. 17.18. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±Π΅ Π»ΠΈΠ½ΠΈΠΈ, Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΠΏΠ΅ΡΠΎ Π΄Π»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠΎΡΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ.
Π’ΠΎΡΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π²ΡΡ Π»ΠΈΠ½ΠΈΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΎΠΉ (Join). Π Π°Π±ΠΎΡΠ°Ρ Ρ Core Graphics, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΠΈΠ½ΠΈΡΠΌΠΈ, ΡΠΎΡΠ»Π΅Π½Π΅Π½Π½ΡΠΌΠΈ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΠ»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° CGContextSetLineJoin. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π·Π°Π΄Π°Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π° Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΡΠ°ΠΌ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ, CGLineJoin. CGLineJoin β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
Π ΠΈΡ. 17.18. ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ
β’ kCGLineJoinMiter β Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΎΡΡΡΡΠΉ ΡΠ³ΠΎΠ». ΠΡΠΎΡ ΡΠΈΠΏ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ;
β’ kCGLineJoinBevel β ΡΠ³ΠΎΠ» Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ Π»ΠΈΠ½ΠΈΠΉ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΌΠ»Π΅Π½, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ±ΡΠ΅ΡΠ°Π½;
β’ kCGLineJoinRound β ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠ° β ΡΠΊΡΡΠ³Π»Π΅Π½Π½Π°Ρ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Β«ΡΠΊΠ°ΡΠ½ΡΠ΅ ΠΊΡΡΡΠΈΒ», ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π»Π° Π±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΠΈΠ½ΠΈΡΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ Β«ΠΊΡΡΡΠ΅ΠΉΒ» ΡΠ΅ΠΊΡΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΈΡΡΠ½ΠΎΠΊ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΠΉ ΡΠΈΡ. 17.19.
Π ΠΈΡ. 17.19. Π’ΡΠΈ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΡΡΠ΅ΠΊ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΠΈΠ½ΠΈΡΠΌΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π² Core Graphics
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΠΌΠ΅ΡΠΎΠ΄ drawRooftopAtTopPointof: textToDisplay: lineJoin:, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
β’ ΡΠΎΡΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π²Π΅ΡΡ ΡΡΠΊΠ° Β«ΠΊΡΡΡΠΈΒ»;
β’ ΡΠ΅ΠΊΡΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ ΠΏΠΎΠ΄ Β«ΠΊΡΡΡΠ΅ΠΉΒ»;
β’ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠΈ.
ΠΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
β (void) drawRooftopAtTopPointof:(CGPoint)paramTopPoint
textToDisplay:(NSString *)paramText
lineJoin:(CGLineJoin)paramLineJoin{
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΡ. */
[[UIColor brownColor] set];
/* ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. */
CGContextRef currentContext = UIGraphicsGetCurrentContext();
/* ΠΠ°Π΄Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ Π»ΠΈΠ½ΠΈΡΠΌΠΈ. */
CGContextSetLineJoin(currentContext,
paramLineJoin);
/* ΠΠ°Π΄Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΈΠ½Ρ Π»ΠΈΠ½ΠΈΠΉ. */
CGContextSetLineWidth(currentContext,
20.0f);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π»ΠΈΠ½ΠΈΡ. */
CGContextMoveToPoint(currentContext,
paramTopPoint.x β 140,
paramTopPoint.y + 100);
/* Π ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅ Π»ΠΈΠ½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ. */
CGContextAddLineToPoint(currentContext,
paramTopPoint.x,
paramTopPoint.y);
/* ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π»ΠΈΠ½ΠΈΡ Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ ΡΠΈΠ³ΡΡΠ°,
Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠ°Ρ ΠΊΡΡΡΡ. */
CGContextAddLineToPoint(currentContext,
paramTopPoint.x + 140,
paramTopPoint.y + 100);
/* ΠΠ»Ρ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ²Π΅Ρ, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ
ΠΌΠΎΠΌΠ΅Π½Ρ. */
CGContextStrokePath(currentContext);
/* Π ΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ ΠΊΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ. */
[[UIColor blackColor] set];
/* Π’Π΅ΠΏΠ΅ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ. */
CGPoint drawingPoint = CGPointMake(paramTopPoint.x β 40.0f,
paramTopPoint.y + 60.0f);
[paramText drawAtPoint: drawingPoint
withFont: [UIFont boldSystemFontOfSize:30.0f]];
}
Π ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ Π½Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° drawRect: ΠΎΠ±ΡΠ΅ΠΊΡΠ°-Π²ΠΈΠ΄Π°, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ:
β (void)drawRect:(CGRect)rect{
[self drawRooftopAtTopPointof: CGPointMake(160.0f, 40.0f)
textToDisplay:@"Miter"
lineJoin: kCGLineJoinMiter];
[self drawRooftopAtTopPointof: CGPointMake(160.0f, 180.0f)
textToDisplay:@"Bevel"
lineJoin: kCGLineJoinBevel];
[self drawRooftopAtTopPointof: CGPointMake(160.0f, 320.0f)
textToDisplay:@"Round"
lineJoin: kCGLineJoinRound];
}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π»Ρ 17.3 ΠΈ 17.7.
17.7. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΠ΅ΠΉ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ½ΡΡΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΡΠΈ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΡΠ΄ΠΎΠΌ ΡΠ΅ΡΠΈΡ ΡΠΎΡΠ΅ΠΊ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΈΠ³ΡΡΡ. Π‘Π΅ΡΠΈΡ ΡΠΈΠ³ΡΡ, ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅, ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΏΡΡΡ. Π£ΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΡΡΠΌΠΈ Π² Core Graphics ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ. Π ΡΠ°Π·Π΄Π΅Π»Π΅ 17.6 ΠΌΡ ΠΎΠΏΠΎΡΡΠ΅Π΄ΠΎΠ²Π°Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ ΠΏΡΡΡΠΌΠΈ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ CGContext. ΠΠΎ Π² Core Graphics Π΅ΡΡΡ ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΡΡΠΌΠΈ Π½Π°ΠΏΡΡΠΌΡΡ. ΠΡΠΊΠΎΡΠ΅ ΠΌΡ Ρ Π½ΠΈΠΌΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ.
ΠΡΡΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΎΠΌΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Ρ. Π£ ΠΏΡΡΠ΅ΠΉ Π½Π΅Ρ Π³ΡΠ°Π½ΠΈΡ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΠΎΠ², Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΈΠ³ΡΡ, ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΏΠΎ Π½ΠΈΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΏΡΡΠ΅ΠΉ Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ°ΠΌΠΊΠΈ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠ°Ρ ΡΠ°ΠΌΠΊΠ° β Π½Π΅ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ. ΠΡΠ°Π½ΠΈΡΡ β ΡΡΠΎ ΠΏΡΠ΅Π΄Π΅Π»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Ρ ΠΎΠ»ΡΡΠ΅, Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠ°Ρ ΡΠ°ΠΌΠΊΠ° ΠΏΡΡΠΈ β ΡΡΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π²ΡΠ΅ ΡΠΈΠ³ΡΡΡ, ΡΠΎΡΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΡΡΠΈ. ΠΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΠΌΠ°ΡΠΊΠ°ΠΌΠΈ, Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ β Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΠΌ Π΄Π»Ρ ΠΏΠΈΡΡΠΌΠ°. ΠΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΡΠ»Π°ΡΡ ΠΎΡΠΊΡΡΡΠΊΡ Π΄ΡΡΠ³Ρ, ΠΊΠΎΠ½Π²Π΅ΡΡΡ Π΄Π»Ρ Π½Π΅Π΅ Π±ΡΠ΄ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π°ΠΊΠ»Π΅ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½Π²Π΅ΡΡ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ ΠΏΡΡΠΈ).
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΡΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΡΡΡ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ Π΄ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ³Ρ, Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Π±ΡΡΠ΅ΡΠ°. ΠΡΡΠ΅Ρ ΠΎΡΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Π½ΡΠ΅ Π·Π° Π½ΠΈΠΌ ΡΡΠ΅Π½Ρ ΠΈ Π² Π½ΡΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π½Π° ΡΠΊΡΠ°Π½. ΠΡΡΠΈ β ΡΡΠΎ, Π² ΡΡΡΠ½ΠΎΡΡΠΈ, Π±ΡΡΠ΅ΡΡ. ΠΠ½ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ, ΡΠΈΡΡΠ΅ΠΌΡΠ΅ Π½Π° Ρ ΠΎΠ»ΡΡΠ΅.
ΠΡΠΈΡΡΡΠΏΠ°Ρ ΠΊ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΡΡΡΠΌΠΈ, Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΡΠΈ. ΠΠ΅ΡΠΎΠ΄, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΠΏΡΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΠΈΡΠ΅ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π½Π° ΡΡΠΎΠΌ ΠΏΡΡΠΈ. ΠΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Core Graphics Π΄Π»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ. Π‘ΠΎΠ·Π΄Π°Π² ΠΏΡΡΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ, ΡΠΈΠ³ΡΡΡ ΠΈ ΡΠΎΡΠΊΠΈ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. ΠΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ, Π»ΠΈΠ±ΠΎ ΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΈΡ Π°ΠΌΠΈ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅. ΠΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ: