2011-08-31 22 views
8

Khi tôi vẽ một số văn bản bằng CGContext, nó được vẽ nhân đôi.iPhone - Vẽ một số văn bản với CGContext: ok nhưng ... được nhân đôi

Tôi đã cố gắng áp dụng một số phép biến đổi, sau đó nó được vẽ tốt, nhưng sau đó phần còn lại của bản vẽ và tất cả các tọa độ có vẻ là xấu.

Tôi đã cố gắng lưu và khôi phục ngữ cảnh, trước và ater vẽ văn bản (và chuyển đổi aplying), nhưng điều đó không giúp ích gì.

Cách một số văn bản phải được vẽ lên Chế độ xem bằng CGContext mà không ảnh hưởng đến phần còn lại của bản vẽ, cũng như co rút trên màn hình CGPoint cho văn bản đó?

+0

Tôi cũng nhận được văn bản được nhân đôi trên trục Y. Làm thế nào tôi có thể sửa lỗi này? – Bogdan

Trả lời

12

Bạn có thể làm rõ ý bạn là 'được nhân đôi' không? Đây là một số mã để vẽ một số văn bản màu đen. Nó không nên được 'nhân đôi'.

CGRect viewBounds = self.bounds; 
CGContextTranslateCTM(ctx, 0, viewBounds.size.height); 
CGContextScaleCTM(ctx, 1, -1); 
CGContextSetRGBFillColor(ctx, 0.0, 1.0, 0.0, 1.0); 
CGContextSetLineWidth(ctx, 2.0); 
CGContextSelectFont(ctx, "Helvetica", 10.0, kCGEncodingMacRoman); 
CGContextSetCharacterSpacing(ctx, 1.7); 
CGContextSetTextDrawingMode(ctx, kCGTextFill); 
CGContextShowTextAtPoint(ctx, 100.0, 100.0, "SOME TEXT", 9); 
+0

Điều đó thực sự gần với những gì tôi làm. Tôi sẽ cố gắng tối nay đoạn mã của bạn. – Oliver

+0

Văn bản có màu xanh lá cây: ( –

+1

vì CGContextSetRGBFillColor (ctx, 0.0, 1.0, 0.0, 1.0); – iosDeveloper

8

Tôi nghĩ rằng bạn phải đảo ngược ma trận văn bản:

CGAffineTransform transform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0); 
CGContextSetTextMatrix(context, transform); 
+0

Cảm ơn giải pháp dễ dàng này! – stonecompass

Các vấn đề liên quan