void DrawPattern (CGContext context) { var destRect = new sd.RectangleF(0, 0, image.Width, image.Height); context.ConcatCTM (new CGAffineTransform (1, 0, 0, -1, 0, image.Height)); context.DrawImage (destRect, image); }
// test draw pattern protected void DrawTexture(CGContext context) { var destRect = new RectangleF(0,0,textureImage.Width,textureImage.Height); context.DrawImage(destRect, textureImage.NativeCGImage); if (wrapMode == WrapMode.TileFlipX) { context.ConcatCTM(CGAffineTransform.MakeScale(-1,1)); context.DrawImage(destRect, textureImage.NativeCGImage); } if (wrapMode == WrapMode.TileFlipY) { var transformY = new CGAffineTransform(1, 0, 0, -1, textureImage.Width, textureImage.Height); context.ConcatCTM(transformY); context.DrawImage(destRect, textureImage.NativeCGImage); } if (wrapMode == WrapMode.TileFlipXY) { // draw the original var transform = new CGAffineTransform(1, 0, 0, 1, 0, textureImage.Height); context.ConcatCTM(transform); context.DrawImage(destRect, textureImage.NativeCGImage); // reset the transform context.ConcatCTM (context.GetCTM().Invert()); // draw next to original one that is flipped by x axis transform = new CGAffineTransform(-1, 0, 0, 1, textureImage.Width * 2, textureImage.Height); context.ConcatCTM(transform); context.DrawImage(destRect, textureImage.NativeCGImage); // reset the transform context.ConcatCTM (context.GetCTM().Invert()); // draw one that is flipped by Y axis under the oricinal transform = new CGAffineTransform(1, 0, 0, -1, 0, textureImage.Height); context.ConcatCTM(transform); context.DrawImage(destRect, textureImage.NativeCGImage); // draw the last one of the quadrant which is flipped by both the y and x axis context.ConcatCTM (context.GetCTM().Invert()); transform = new CGAffineTransform(-1, 0, 0, -1, textureImage.Width * 2, textureImage.Height); context.ConcatCTM(transform); context.DrawImage(destRect, textureImage.NativeCGImage); } }