2011-07-09 30 views

Trả lời

32

Giả sử bạn đang sử dụng XNA 4.0 với alpha ưu tiên. Trong spritebatch.draw của bạn nhân màu bằng float, 0.5f cho độ trong suốt 50% và vẽ như bình thường. Nếu bạn không sử dụng alpha cấp tiến, tôi khuyên bạn nên làm vì lý do hiệu suất và nó trực quan hơn sau khi bạn quen với nó.

Ví dụ:

_spriteBatch.Draw(texture, location, Color.White * 0.5f); 

Edit: Ngoài ra hãy chắc chắn rằng bạn thiết lập trạng thái pha trộn của bạn để BlendState.AlphaBlend, hoặc một trạng thái hỗn hợp có hỗ trợ alpha và không NonPremultiplied.

Ví dụ:

_spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend); 
+7

Sử dụng toán tử nhân trên 'Color' điều biến tất cả bốn kênh (RGBA) và chỉ cung cấp sự thay đổi dự kiến ​​trong minh bạch khi sử dụng chế độ hòa trộn premultiplied (ví dụ: 'AlphaBlend'). Đối với các trạng thái pha trộn khác hoạt động như mong đợi (ví dụ: 'Additive' và' NonPremultiplied'), bạn nên đặt giá trị alpha của màu trực tiếp (chỉ còn lại RGB). –

6

Chỉ cần sử dụng màu sắc như new Color(RGBA); nơi:

  • R là Red
  • G là màu xanh lá cây
  • B là màu xanh
  • A là Alpha

Ví dụ:

new Color(100, 100, 100, 100); 
+2

Điều này có thể không có ý định nhưng bạn chỉ cho tôi thấy tham số 'Color' không phải là en enum lol! Tôi không có ý tưởng bạn có thể tạo ra màu sắc của riêng bạn như thế. – TheGateKeeper

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