私たちのアプリでは、画像をトリミング、スケーリング、パンできるようにしたいと考えていますが、UIImageView の上にトリミング領域を描画する方法がわかりません。
コアグラフィックスをいじってみました。画像に黒いストロークで領域をレンダリングできましたが、画像が反転しました。それだけでなく、画像に描いたので、ジェスチャを使用して移動および拡大縮小すると、領域も影響を受けるのではないかと心配しています。
正しい方向へのプッシュは大歓迎です!
いくつかの研究努力を示すために、実際には私が望むことをしない私のコードを次に示します。
// Aspect ration - Currently 1:1
const int arWidth = 1;
const int arHeight = 1;
UIGraphics.BeginImageContext(ImgToCrop.Frame.Size);
var context = UIGraphics.GetCurrentContext();
// Set the line width
context.SetLineWidth(4);
UIColor.Black.SetStroke();
// Our starting points.
float x = 0, y = 0;
// The sizes
float width = ImgToCrop.Frame.Width, height = ImgToCrop.Frame.Height;
// Calculate the geometry
if(arWidth == arHeight){
// The aspect ration is 1:1
width = ImgToCrop.Frame.Width;
height = width;
x = 0;
y = ImgToCrop.Frame.GetMidY()-height/2;
}
// The rect
var drawRect = new RectangleF(x,y,width,height);
context.DrawImage(new RectangleF(
ImgToCrop.Frame.X,
ImgToCrop.Frame.Y,
ImgToCrop.Frame.Width,
ImgToCrop.Frame.Height),ImgToCrop.Image.CGImage);
// Draw it
context.StrokeRect(drawRect);
ImgToCrop.Image = UIGraphics.GetImageFromCurrentImageContext();