2013-02-11 29 views
7

Tôi bắt đầu học C# và XNA, và tôi muốn hiển thị một ảnh động (được di chuyển bởi bàn phím của tôi).Sprite bị mờ

Tôi đã có tập tin sprite này:

basic sprite

Để chỉ hiển thị một phần tôi cần, tôi sử dụng mã này:

Rectangle cuttedSprite = new Rectangle(
    this.W * (int)this.mCurSprite.X, 
    this.H * (int)this.mCurSprite.Y, 
    this.W, 
    this.H 
); 
spriteBatch.Draw(this.mSpriteTexture, this.mPosition, cuttedSprite, Color.White); 

Nhưng vấn đề của tôi là các render hình ảnh bị mờ sau khi di chuyển:

blur problem

Tôi đã cố sửa lỗi này bằng cách thay đổi SamplerStates, nhưng không có gì thay đổi. Có ai có ý tưởng giúp tôi không?

+3

Hãy thử nó với 'SamplerState.PointWrap'. Ngoài ra, vì 'mPosition' có lẽ là' Vector2', hãy thử làm tròn 'mPosition.X' và' mPosition.Y' thành các số nguyên gần nhất. – Lucius

+1

Bạn đã đúng! Tôi đã cố gắng hiển thị hình ảnh của mình trên một pixel hoàn toàn không có khi tôi di chuyển theo đường chéo ... Ok đăng câu trả lời này và tôi hợp lệ! – PoulsQ

Trả lời

5

Làm tròn vị trí của ma số đến số nguyên gần nhất.

Nếu hình chữ nhật đích của sprite được bù trừ ít hơn pixel, trình lấy mẫu trong trình đổ bóng pixel sẽ tính màu bằng cách nội suy giữa các pixel lân cận.

Một tùy chọn khác đang thay đổi filter method của mẫu đến nội suy lân cận gần nhất. Bạn có thể làm điều đó bằng cách chỉ định một số SamplerState.PointWrap hoặc SamplerState.PointClamp khi gọi .

+1

Tùy thuộc vào cách bạn xử lý mọi thứ, bạn có thể muốn thực hiện làm tròn chỉ cho mục đích hiển thị. Nếu bạn đang sử dụng vật lý, ví dụ, bạn muốn để lại các tọa độ chính xác trong giải quyết nếu không nó sẽ cố gắng và chính xác cho họ nhiều lần, do đó, chỉ vòng cuộc gọi vẽ thực tế. – ssube

0

Cách dễ nhất là truyền tới vị trí (int) Vị trí.X và (int).Y khi nút di chuyển được nhả ra

+0

Câu hỏi đã được trả lời gần một năm trước, không cần phải nhấn nó trừ khi có điều gì đó mới để thêm – Leeor

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