在您的UIView子類的Draw(drawRect:
)覆蓋中,您可以在當前上下文中繪製。在這個例子中,我們從視圖的中心繪製整個視圖紅色,然後繪製和縮放CGImage
大小爲100×200:
public override void Draw(CGRect rect)
{
var context = UIGraphics.GetCurrentContext();
context.SetFillColor(UIColor.Red.CGColor);
context.FillRect(rect);
var cgImage = UIImage.FromFile("face").CGImage;
var drawImageToRect = new CGRect(rect.Width/2, rect.Height/2, 100, 200);
context.DrawImage(drawImageToRect, cgImage);
}
回覆:iOS Drawing Concepts
如果你需要混合的UIKit和CoreGraphics中的起源,您可以將原點(請參閱上面的蘋果文檔鏈接Coordinate Systems and Drawing in iOS
):
public override void Draw(CGRect rect)
{
var context = UIGraphics.GetCurrentContext();
context.SaveState();
context.TranslateCTM(0, rect.Height);
context.ScaleCTM(1, -1);
context.SetFillColor(UIColor.Red.CGColor);
context.FillRect(rect);
var cgImage = UIImage.FromFile("face").CGImage;
var drawImageToRect = new CGRect(rect.Width/2, rect.Height/2, 100, -200);
context.DrawImage(drawImageToRect, cgImage);
context.RestoreState();
}
感謝您的答覆。 我嘗試使用上述,但我的圖像顛倒。我的圖像處於拉伸模式。有沒有一種方法可以將比例設置爲Aspect擬合? – Praddy
在規模/寬高比方面,使用原始圖像的大小來計算rect在'context.DrawImage'方法中使用的大小,儘可能顛倒,是的,如果您正在使用**左上角**作爲0,0用於UIKit函數,使用CoreGraghics,0,0在**左下角**:https://developer.apple.com/library/content/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/ Art/flipped_coordinates-2_2x.png我更新了我的答案.... – SushiHangover
非常感謝。這對我有效。 但是,我正在做一些基於CGRect的計算。有沒有其他的重寫方法會在onDraw()之前調用,這樣我就不需要每次調用onDraw時都進行計算。 – Praddy