「Xamarin.Mac/ビットマップに図形を描画する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
(ページの作成:「Core Graphicsを使ってビットマップに図形を描画したいわけだ。 よくあるCore Graphicsのサンプルだとビューに直接描画ばかりでオ...」)
 
imported>Administrator
 
35行目: 35行目:
  
 
             // この保存は独自の拡張メソッド
 
             // この保存は独自の拡張メソッド
 +
            // 「Xamarin.Mac/CGImageをファイルに保存する」を参照
 
             cgImage.Save("/tmp/test.png", MobileCoreServices.UTType.PNG);
 
             cgImage.Save("/tmp/test.png", MobileCoreServices.UTType.PNG);
 
</source>
 
</source>

2017年8月24日 (木) 07:43時点における最新版

Core Graphicsを使ってビットマップに図形を描画したいわけだ。 よくあるCore Graphicsのサンプルだとビューに直接描画ばかりでオフスクリーン(ビットマップ)への描画はあまりないようだ。そのためこの方法で正しいのかは知らない。とりあえず動いてはいる。

            // まずオフスクリーンとなるビットマップを作る
            var bitmapRep = new NSBitmapImageRep(
                planes: IntPtr.Zero,
                width: 100,
                height: 100,
                bps: 8,
                spp: 4,
                alpha: true,
                isPlanar: false,
                colorSpaceName: NSColorSpace.DeviceRGB,
                rBytes: 0,
                pBits: 0
            );

            // 描画コンテキストを作る
            using (var offscreenContext = NSGraphicsContext.FromBitmap(bitmapRep))
            {
                NSGraphicsContext.CurrentContext = offscreenContext;
                var cgContext = NSGraphicsContext.CurrentContext.GraphicsPort;

                // 図形を描いてみる
                cgContext.BeginPath();
                cgContext.MoveTo(0, 0);
                cgContext.AddLineToPoint(bitmapRep.Size.Width, bitmapRep.Size.Height);
                cgContext.ClosePath();
                cgContext.StrokePath();
            }

            // CGImageを取得する
            var cgImage = bitmapRep.CGImage;

            // この保存は独自の拡張メソッド
            // 「Xamarin.Mac/CGImageをファイルに保存する」を参照
            cgImage.Save("/tmp/test.png", MobileCoreServices.UTType.PNG);

関連項目[編集 | ソースを編集]