2012-05-15 19 views
5

Tôi có một số Path mà thường có StrokeThickness là 1. Trong một số trường hợp, nó cần phải có StrokeThickness 10. Khi tôi tăng độ dày nét, tôi không muốn đường dẫn đến mất thêm không gian.Tăng StrokeThickness nhưng duy trì kích thước của Path

Theo mặc định, chỉ cần tăng StrokeThickness tăng kích thước được hiển thị của đường dẫn. Vì vậy, bạn sẽ có được một cái gì đó như thế này (đề cương xanh vượt ra ngoài ranh giới màu đen):

Stroke expands beyond original boundary of path

Đây là những gì tôi đang cố gắng để đạt được (đề cương xanh chỉ nằm trong ranh giới màu đen):

Stroke is entirely inside original boundary of path

tôi có thể nghĩ đến hai cách toán học để bù đắp cho sự tăng StrokeWidth:

  1. thủ adjus t các điểm của tam giác vào trong.
  2. Sử dụng ScaleTransform trên Hình học đường dẫn.

Cả hai vấn đề này đều có vấn đề/phức tạp. Có cách nào dễ hơn không?

Trả lời

18

Bạn có thể cắt những con đường bằng hình học riêng của mình như thế này:

<Path ... Clip="{Binding Data, RelativeSource={RelativeSource Self}}"/> 

nhưng sau đó bạn sẽ cần phải tăng gấp đôi StrokeThickness, vì chỉ có một nửa số đột quỵ là nhìn thấy được.

+2

+1, rất thông minh! – devuxer

+0

Cảm ơn Clemens, nếu tôi cần điều ngược lại thì sao? để duy trì đột quỵ bên ngoài, có cách nào để loại trừ hình dạng tự? – superware

+0

Vui lòng xem https://stackoverflow.com/questions/48563157/clip-inverted-own-geometry – superware

0

Trên một ý thích bất chợt tôi đặt StrokeThickness = -1 trên Rectangle của tôi và nó đã làm chính xác những gì tôi muốn nó: các đột quỵ đi trên bên của Rectangle chứ không phải ở bên ngoài.

+2

Vì vậy, để giải quyết trường hợp cụ thể của OP, nó phải khác nhau giữa -1 và -10? –