「Xamarin.Mac/NSViewの描画内容をファイルに保存する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「==実装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);
        }
    }

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

参考文献[編集 | ソースを編集]