2010-12-14 13 views
5

Kullanıcı tasarlarken resim çerçevesini görselleştiren bir uygulama oluşturuyorum. Çerçeveyi oluşturmak için ahşabın fiziksel bitlerini temsil eden ve onu doldurmak için bir TextureBrush kullanan 4 çokgen çiziyorum.Bir kiremitli görüntü ile dolu bir çokgen oluşturun C#

Bu, sol ve üst kenarlar için mükemmel şekilde çalışır. Ancak, alt ve sağ kenarlar için bu yöntem çalışmıyor. Bana, TextureBrush'ın çizdiğim çokgen içinde değil, görüntüdeki (0,0) noktadan geldiğini görüyorum. Sonuç olarak, karo çokgen ile hizalanmaz. Görüntünün boyutunu ayarlayarak döşemenin mükemmel şekilde hizalanmasını sağlayabilirim.

Rasgele yerleştirilmiş bir çokgeni nasıl oluşturabilirim ve tuvalden değil, çokgen içindeki (0,0) noktadan başlayarak kiremitli bir görüntüyle doldururum?

Daha iyi bir çözüm varsa FillPolygon ve TextureBrush'a bağlı değilim.

Örnek

alt text

cevap

4

Sadece cevabını buldum. TextureBrush kurucusuna bir BoundingBox ekleyerek oynamaktaydım ama OutOfMemory istisnalarını tutmaya devam ettim ve anlayamadığımı düşündüm. o .NET framework çalışması etrafında kaplamayı

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

Matrix mtx = brush.Transform; 
mtx.Translate(xoffset, 0); 
brush.Transform = mtx; 
taşımak için bir dönüşüm kullanmaktır

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

bir hata var çıkıyor

İlgili konular