2010-12-14 2 views
5

Ich erstelle eine Anwendung, die einen Bilderrahmen visualisiert, wie der Benutzer es gestaltet. Um den Rahmen zu erstellen, zeichne ich 4 Polygone, die die physischen Teile von Holz darstellen und mit einem TextureBrush füllen.Erstellen Sie ein Polygon gefüllt mit einem gekachelten Bild in C#

Dies funktioniert perfekt für die linken und oberen Kanten. Für den unteren und rechten Rand funktioniert diese Methode jedoch nicht. Es scheint mir, dass der TextureBrush von dem Punkt (0,0) auf dem Bild und nicht innerhalb des Polygons, das ich gezeichnet habe, kachelt. Daher wird die Kachel nicht mit dem Polygon ausgerichtet. Durch Anpassen der Größe des Bildes kann ich die Kachel perfekt ausrichten.

Wie erstelle ich ein beliebig positioniertes Polygon und fülle es mit einem gekachelten Bild, beginnend mit dem Punkt (0,0) innerhalb des Polygons, nicht die Leinwand?

Ich bin nicht an FillPolygon und TextureBrush angeschlossen, wenn es eine bessere Lösung gibt.

Beispiel

alt text

Antwort

4

Ich habe gerade die Antwort. Ich spielte mit dem Hinzufügen einer BoundingBox zu dem TextureBrush-Konstruktor, aber ich bekam immer OutOfMemory-Ausnahmen und dachte, dass ich es nicht verstehe. Stellt sich heraus, es

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

Die Arbeit um zu verwenden ist, eine Transformation um einen Fehler in dem .NET-Framework ist die Textur

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

Matrix mtx = brush.Transform; 
mtx.Translate(xoffset, 0); 
brush.Transform = mtx; 
zu bewegen
Verwandte Themen