2016-04-07 9 views
0

Ich bin in der Lage ein Rechteck mit einem Bild zu füllen, und ich gebe Sie eine Maske auf das Bild mit diesem CodeWin2D einzelnes Bild zeichnen

args.DrawingSession.FillRectangle(rect, imgRnd, mask); 

i anwenden muß, um einige zu diesem Bild verwandeln, i‘ Ich kann das ohne Problem machen, aber ich habe ein seltsames Problem, das letzte Pixel wird wiederholt.

i haben

imgRnd.ExtendX = CanvasEdgeBehavior.Wrap; 
imgRnd.ExtendY = CanvasEdgeBehavior.Wrap; 

verwendet und das Bild wird kontinuierlich wiederholt.

Meine Frage ist: gibt es eine Möglichkeit, einmal das Bild deaktivieren und ExtendX und ExtendY zu zeichnen?

Antwort

1

FillRectangle füllt immer alle Pixel innerhalb des angegebenen Rechtecks. Die Enumeration des Kantenverhaltens steuert, mit welchem ​​Wert sie gefüllt werden, wenn das Bild so positioniert ist, dass es das gezeichnete Rechteck nicht vollständig abdeckt.

Wie genau transformieren Sie das Bild? Können Sie das ändern, um auch das Rechteck selbst zu transformieren, so dass Sie nicht versuchen, Pixel zu füllen, die nicht durch das Bild abgedeckt sind?

Eine weitere Möglichkeit besteht darin, Bildeffekte (Microsoft.Graphics.Canvas.Effects Namespace), die über viel detailliertere Kontrolle als FillRectangle geben zu verwenden, wie mehrere Bilder umgewandelt werden, kombiniert, usw.