2014-10-14 25 views
5

Tôi cần vẽ một đường viền mềm cho GDI + GraphicsPath của tôi. Một cái gì đó như thế này: A path edge (red) drawn with a smooth penCó bút tương đương bút mềm trong GDI + không?

Cạnh đường dẫn được hiển thị bằng màu đỏ. Tôi muốn sử dụng một cây bút rộng mượt mà. Tôi cũng cần khả năng kiểm soát độ nhẵn của cây bút.

Tôi đã cố gắng sử dụng bàn chải gradient bằng bút nhưng không thể tìm thấy giải pháp hoạt động.

Tôi có thể đạt được kết quả mong muốn bằng cách vẽ đường viền bằng bút màu đen và áp dụng bộ lọc làm mịn Gaussian ở phía trên hình ảnh kết quả, nhưng tôi muốn tránh điều này vì nó chậm khi tôi phải xử lý toàn bộ hình ảnh có thể khá lớn.

Có cách nào để vẽ đường viền mịn không?

Trả lời

2

Không có cách nào tiêu chuẩn trong GDI + cung cấp chức năng này, do đó bạn sẽ phải tạo nó.

Bạn có thể theo dõi các đoạn đường và vẽ một vòng tròn mờ, đầy dọc theo các đoạn. Bằng cách vẽ vòng tròn mờ một lần đến một bitmap, nó sẽ khá dễ dàng và nhanh chóng để nó liên tục. Bằng cách pha trộn từ từ theo thời gian với canvas, bạn cũng có thể tạo ra một hiệu ứng rất đẹp và nó sẽ cho phép người dùng kiểm soát cường độ và có thể là kích thước của vòng tròn.

+0

Có cách nào đơn giản để vẽ bitmap ở mọi pixel dọc theo đường dẫn hình dạng GDI + không? Có thể khó tính toán tọa độ cho pixel dọc theo đường cong. – Lev

+0

@Lev - Bút GDI chỉ hỗ trợ một màu duy nhất, không có họa tiết. Vì vậy, tôi không sợ. Đối với hầu hết các hình dạng GDI, các thông tư được biết rõ để bạn có thể tính toán chúng và vẽ bản vẽ. Có lẽ có một thư viện đã làm điều này. –

+0

@lev - nhân tiện, bạn đang sử dụng C/C++ hay C#? (Chỉ trong trường hợp tôi có thời gian để tạo bản trình diễn) –

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