Tôi đang sử dụng SpriteBatch để vẽ một Texture2D trên màn hình và tự hỏi làm thế nào tôi có thể thao tác với độ mờ của hình ảnh? Bất cứ ai cũng biết cách tốt nhất để hoàn thành điều này?Làm thế nào để làm cho một Texture2D 50% minh bạch? XNA
Trả lời
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);
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);
Đ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
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). –