2010-12-14 84 views
5

Tôi đang tạo một ứng dụng hiển thị khung hình khi người dùng thiết kế khung hình. Để tạo khung tôi vẽ 4 đa giác đại diện cho các bit vật lý của gỗ và sử dụng một TextureBrush để điền vào nó.Tạo đa giác đầy hình ảnh lát gạch trong C#

Công trình này hoàn toàn phù hợp cho các cạnh bên trái và trên cùng. Tuy nhiên, đối với các cạnh dưới cùng và bên phải phương pháp này không hoạt động. Nó xuất hiện với tôi rằng TextureBrush là tiling từ điểm (0,0) trên hình ảnh và không phải trong đa giác tôi đã rút ra. Kết quả là, ô xếp không thẳng hàng với đa giác. Bằng cách điều chỉnh kích thước của hình ảnh, tôi có thể lấy hình xếp để xếp hàng hoàn hảo.

Làm cách nào để tạo một đa giác được định vị tùy ý và tô màu nó bằng hình ảnh lát gạch, bắt đầu từ điểm (0,0) trong đa giác chứ không phải canvas?

Tôi không được đính kèm với FillPolygon và TextureBrush nếu có giải pháp tốt hơn.

Ví dụ

alt text

Trả lời

4

Tôi vừa tìm thấy câu trả lời. Tôi đã chơi với việc thêm một BoundingBox vào constructor TextureBrush nhưng tôi vẫn giữ ngoại lệ OutOfMemory và nghĩ rằng đó là tôi không hiểu. Hóa ra đó là một lỗi trong .NET framework

http://connect.microsoft.com/VisualStudio/feedback/details/90973/texturebrush-constructor-throws-out-of-memory-exception-when-providing-the-bounding-rectangle

Công việc xung quanh là sử dụng một chuyển đổi để di chuyển các kết cấu

var brush = new TextureBrush(new Bitmap(imagefile)); 

Matrix mtx = brush.Transform; 
mtx.Translate(xoffset, 0); 
brush.Transform = mtx; 
Các vấn đề liên quan