「Xamarin.Mac/ビットマップに図形を描画する」の版間の差分
ナビゲーションに移動
検索に移動
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);