2008-10-09 29 views

Trả lời

5

Sau khi đọc nhận xét trong câu trả lời khác - trong đó bạn tuyên bố rằng bạn muốn đường viền phù hợp với hình dạng của hình ảnh - tôi chỉ có thể gợi ý bạn hãy xem BitmapEffects. Có một cho một hiệu ứng Outer Glow.

Nhân đôi hình ảnh có thể sẽ kém hiệu quả hơn và có thể sẽ tạo ra một số lượng lớn các biến chứng do các khía cạnh khác của các mục đó, chẳng hạn như mọi ràng buộc.

Chỉnh sửa: Trong thuộc tính .NET 4.0, BitmapEffects và lớp BitmapEffect đã lỗi thời. Bạn sẽ nhận được một ngoại lệ ném. Thay vào đó, bây giờ bạn có lớp học System.Windows.Media.Effects.Effect và các lớp dẫn xuất của nó, cùng với các thuộc tính như Visual.VisualEffect.

+0

lol, tôi chỉ tìm ra điều này và chuẩn bị đăng nó. Tôi đoán bạn có được đại diện. – Dylan

+0

Whee. Vui vì bạn đang tìm kiếm ở đúng nơi. :) –

+0

Đề nghị tốt đẹp, không biết tại sao tôi không nghĩ về nó đầu tiên ... đặc biệt là cho rằng tôi chỉ thực hiện một con chuột có hiệu lực vào ngày khác. Một điều để chỉ ra về BitmapEffects, tuy nhiên, là họ là một vấn đề hiệu suất được biết đến. Vì vậy, xem ra cho điều đó. – cplotts

1

Nếu bạn bọc các đối tượng Hình ảnh đó trong một Đường viền ... và làm cho Opacity 0 theo mặc định ... thì bạn có thể biến Opacity thành 1 bất cứ khi nào bạn cần.

Điều đó có hữu ích không?

+0

Đường viền luôn luôn là hình chữ nhật hay nó sẽ có hình dạng của đối tượng bên dưới? – Dylan

+0

Để trả lời câu hỏi của riêng tôi, Border sẽ vẫn là một hình vuông. Mặc dù điều này có thể làm việc, tôi đang tìm các phác thảo có cùng một hình dạng đối tượng Visual. – Dylan

+0

Trong trường hợp đó, bạn có thể chỉ sao chép trực quan (hoặc phần ngoài biên giới 'hình ảnh' của hình ảnh), nhưng cung cấp cho nó một chút chiều rộng hơn và chiều cao ít hơn một chút (để nó xuất hiện như một biên giới) .. Và sau đó, tất nhiên, sử dụng mẹo Opacity ở trên? Liệu điều đó có hiệu quả? – cplotts

5

Joel có một gợi ý tuyệt vời về việc sử dụng BitmapEffects.

Tuy nhiên, nếu bạn có thể sử dụng .NET 3.5 SP1, tôi sẽ hướng bạn về phía Hiệu ứng kết xuất GPU. Vì vậy, thay vì sử dụng UIElement.BitmapEffect, bạn sẽ sử dụng UIElement.Effect. .NET 3.5 SP1 có hai hiệu ứng GPU được xây dựng trong: BlurEffect và DropShadowEffect. Bạn cũng có thể tạo các hiệu ứng GPU của riêng mình ... và đây là nơi bạn sẽ sử dụng ShaderEffect.

Kiểm tra bài đăng trên blog của Greg Schechter series để biết thêm thông tin. Dưới đây là một đoạn mã cho một hiệu ứng chuột mà tôi vừa mới triển khai vài ngày trước (nó thực sự xuất hiện giống như hiệu ứng bitmap phát sáng bên ngoài do ShadowDepth là 0, nhưng không chính xác):

<Path 
    x:Name="mouseOverEffect" 
    Width="80" 
    Height="43.916" 
    Stretch="None" 
    Fill="#FFFFFFFF" 
    Opacity="0" 
> 
    <Path.Data> 
     <PathGeometry FillRule="Nonzero"> 
      <PathFigure IsClosed="True" StartPoint="39.9592899612151,25.9913931634531"> 
       <LineSegment Point="80.0000001464848,43.9159987905149"/> 
       <LineSegment Point="39.9513899394755,4.97379893856246E-14"/> 
       <LineSegment Point="1.77635636294422E-15,43.9159987905149"/> 
       <LineSegment Point="39.9592899612151,25.9913931634531"/> 
      </PathFigure> 
     </PathGeometry> 
    </Path.Data> 
    <Path.Effect> 
     <DropShadowEffect 
      Color="#FFFFFFFF" 
      BlurRadius="10" 
      ShadowDepth="0" 
     /> 
    </Path.Effect> 
</Path> 
+0

Thật không may, tôi không thể sử dụng SP1 vì một số khách hàng của chúng tôi đang ở trong môi trường rất hạn chế (tức là chính phủ). – Dylan

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