酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Xamarin.iOSでサイズを指定して空の(または単色の)UIImageオブジェクトを生成する

本記事では、Xamarin.iOSを使ってUIImageオブジェクトをプログラム(コード)だけで動的に生成する基本となる方法を紹介します。Objective-Cで実現する方法については下記の記事をご覧ください。

以下、サイズを指定して空の(または単色の)UIImageオブジェクトを生成する方法をご紹介します。

private UIImage CreateImage(CoreGraphics.CGSize size,
    CoreGraphics.CGColor fillColor = null)
{
    UIImage image = null;

    // ビットマップ形式のグラフィックスコンテキストの生成
    UIGraphics.BeginImageContextWithOptions(
        size, true, 0);

    var context = UIGraphics.GetCurrentContext();

    // 指定した色で塗りつぶす
    if (fillColor != null)
    {
        context.SetFillColor(fillColor);
        context.FillRect(new CoreGraphics.CGRect(
            new CoreGraphics.CGPoint(0, 0), size));
    }

    // 現在のグラフィックスコンテキストの画像を取得する
    image = UIGraphics.GetImageFromCurrentImageContext();

    // 現在のグラフィックスコンテキストへの編集を終了
    // (スタックの先頭から削除する)
    UIGraphics.EndImageContext();

    return image;
}

このCreateImageメソッドは以下のように使用します。以下のサンプルコードではGetCellメソッドで使っていることとしましょう。

var image = CreateImage(
    new CoreGraphics.CGSize(50, 50), UIColor.Purple.CGColor);
    
...

cell.ImageView.Image = image;

UITableViewCellに設定されたImageViewは下図のようになります。見ての通り、50pt x 50ptの単色で塗られたUIImageができました。

f:id:ch3cooh393:20141126231003p:plain

このTipsは、UIGraphicsを使って画像を生成する上でもっともシンプルなコードです。

関連記事

Xamarin.iOSを使ってアプリ開発する際に逆引きとしてお使いください。