2012-02-27 26 views
8

tôi lại ở đây với hai câu hỏi, cả hai đều liên quan tới nhauEmboss hiệu lực thi hành trong Core Graphics

  1. Tôi muốn vẽ đường dập nổi với đồ họa lõi. Bất kỳ ai có thể gợi ý cho tôi cách tạo bóng bên trong để vẽ trên các sự kiện cảm ứng không?
  2. Ngay cả khi vẽ bóng bên ngoài. Bóng được vẽ chồng chéo ở giữa. và đường kẻ được vẽ bằng các màu khác với màu đen giống như con sâu. Có ai giúp tôi không? Hình ảnh sau đây minh họa những gì tôi muốn giải thích cho Câu hỏi 2: enter image description here Tạo bóng không phải là ngay cả. Họ tối tại một số điểm

tôi thêm mã mà tôi đang sử dụng để vẽ dòng ..

for (int i=0; i<[currentPath count]; i++) 
    { 
     CGPoint mid1 = [[self midPoint:[currentPath objectAtIndex:i+1] :[currentPath objectAtIndex:i]] CGPointValue]; 
     CGPoint mid2 = [[self midPoint:[currentPath objectAtIndex:i+2] :[currentPath objectAtIndex:i+1]] CGPointValue]; 
     CGContextMoveToPoint(context, mid1.x, mid1.y); 
     CGContextAddQuadCurveToPoint(context, [[currentPath objectAtIndex:i+1] CGPointValue].x, [[currentPath objectAtIndex:i+1] CGPointValue].y, mid2.x, mid2.y); 
     CGContextSetShadow(context, CGSizeMake(-2, -2), 3); 

     CGContextSetLineCap(context, kCGLineCapRound); 
     CGContextSetStrokeColorWithColor(context,[color CGColor]);    
     CGContextSetLineWidth(context, linewidth);    
     CGContextStrokePath(context); 
     i+=2; 
    } 
+2

Vui lòng không sử dụng dấu chấm hỏi trong đám. – Till

+0

@Till Fine now? – DivineDesert

+0

Vui lòng hiển thị mã vẽ của bạn. Cho đến khi bạn làm điều đó, chúng tôi chỉ có thể đoán được những gì bạn đang làm. – sosborn

Trả lời

4

tôi tìm thấy giải pháp của tôi .. Vấn đề là rất ngớ ngẩn ... tôi đã quyết mối xung đột đường dẫn trên mỗi lần lặp được tạo ra vấn đề này .. Bây giờ tôi có thể rút ra ngay cả với alpha ít hơn 1 ..

CGContextStrokePath(context); 

Đường này nằm ngoài vòng lặp .. Và tất cả đang hoạt động tốt ngay bây giờ :)

0

Dường như bạn đang vẽ con đường bằng cách sử dụng một loạt các vòng tròn.

Vấn đề là bạn đã đặt bóng trên các chấm riêng lẻ và đó là lý do tại sao bạn nhận được các hiệu ứng lạ.

Một giải pháp có thể - không đặt bóng trên các chấm, đặt trên đường dẫn: nhân đôi đường mà bạn đã vẽ, vẽ nó bằng màu khác, bù đắp và đặt vào dưới dòng thực của bạn.

Hoặc, nếu bạn đang sử dụng các lớp - hãy xem các đường dẫn bóng.

+1

Tôi không vẽ đường dẫn bằng cách sử dụng một loạt các vòng tròn, Vì tôi đang thêm bóng vào đường kẻ và các đường được vẽ bằng một mảng điểm, mỗi đường nhỏ được phủ bóng và do đó bạn có thể thấy chuỗi vòng tròn .. – DivineDesert

+0

tương tự như hiệu ứng mà tôi nhận được khi tôi vẽ các đường có giá trị alpha nhỏ hơn 1 .. @Abizern – DivineDesert

3

Đối với các bóng chồng chéo của bạn, bạn muốn lớp trong suốt kết hợp chúng trước. Xem Transparency Layers trong Hướng dẫn lập trình 2D của Quartz.

+0

Điểm u nói là tốt .. Nhưng tôi sẽ thêm các lớp trong suốt ở đâu .. Vì tôi vẽ các đường nhỏ trên cảm ứng sự kiện .. Mỗi dòng không thể được thêm vào lớp minh bạch .. Tôi đã cố gắng này trước đó .. Nhưng không có giải pháp tích cực .. Nếu tôi đã làm sai sau đó tôi không biết ..Nhưng sự nhầm lẫn của tôi là vẽ các lớp trong suốt cho ai? – DivineDesert

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