「Xamarin.Mac/NSViewの描画内容をファイルに保存する」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==実装1== NSBitmapImageRepのコンストラクタの引数に画面の座標を指定すると、その範囲のスクリーンキャプチャが取れる。 <sour...」) |
|||
1行目: | 1行目: | ||
+ | ==概要== | ||
+ | 絵心がなく[[Photoshop]]などのお絵描きソフトが使えないので、[[CoreGraphics]]を使い[[プログラム]]で描画し、その画像を[[ファイル]]に保存したい。簡易的なお絵描きソフト作れるかも。 | ||
+ | |||
==実装1== | ==実装1== | ||
NSBitmapImageRepのコンストラクタの引数に画面の座標を指定すると、その範囲の[[スクリーンキャプチャ]]が取れる。 | NSBitmapImageRepのコンストラクタの引数に画面の座標を指定すると、その範囲の[[スクリーンキャプチャ]]が取れる。 | ||
39行目: | 42行目: | ||
{{stub}} | {{stub}} | ||
+ | |||
+ | [[category:Xamarin.Mac]] |
2015年8月20日 (木) 06:36時点における最新版
概要[編集 | ソースを編集]
絵心がなくPhotoshopなどのお絵描きソフトが使えないので、CoreGraphicsを使いプログラムで描画し、その画像をファイルに保存したい。簡易的なお絵描きソフト作れるかも。
実装1[編集 | ソースを編集]
NSBitmapImageRepのコンストラクタの引数に画面の座標を指定すると、その範囲のスクリーンキャプチャが取れる。
public class RadialLineView : NSView
{
//〜〜〜省略〜〜〜
public override void DrawRect(CGRect dirtyRect)
{
base.DrawRect(dirtyRect);
var context = NSGraphicsContext.CurrentContext.GraphicsPort;
// 白色で塗りつぶす
context.SetFillColor(1.0f, 1.0f, 1.0f, 1.0f);
context.FillRect(dirtyRect);
// 黒色の丸を描く
context.SetLineWidth(2.0f);
context.SetStrokeColor(0.0f, 0.0f, 0.0f, 1.0f);
context.StrokeEllipseInRect(dirtyRect);
// NSViewをロックしてビットマップを取得
this.LockFocus();
var rep = new NSBitmapImageRep(dirtyRect);
this.UnlockFocus();
// TIFFファイルとして保存する
rep.TiffRepresentation.Save("/tmp/test.tiff", true);
}
}