「Xamarin.MacでCoreGraphicsの基本的な使い方」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「==CGContextを取得する== NSGraphicsからCGContextを取得する。 <source lang="csharp"> var nsContext = NSGraphicsContext.CurrentContext; var cgContext =...」)
 
1行目: 1行目:
==CGContextを取得する==
+
== CGContextを取得する ==
 
NSGraphicsからCGContextを取得する。
 
NSGraphicsからCGContextを取得する。
 
<source lang="csharp">
 
<source lang="csharp">
6行目: 6行目:
 
</source>
 
</source>
  
==線幅、線色、塗る潰し色==
+
== 線幅、線色、塗る潰し色 ==
 
色指定は[[RGB]]だが一般的な0〜255ではなく0.0〜1.0の[[浮動小数点]]で指定する。
 
色指定は[[RGB]]だが一般的な0〜255ではなく0.0〜1.0の[[浮動小数点]]で指定する。
 
色指定は[[CMYK]]でもでき、こちらも0.0〜1.0の範囲の浮動小数点となる。
 
色指定は[[CMYK]]でもでき、こちらも0.0〜1.0の範囲の浮動小数点となる。
15行目: 15行目:
 
</source>
 
</source>
  
==四角形を描く==
+
==四角形を描く ==
 
画面初期化でよく使う四角形である。
 
画面初期化でよく使う四角形である。
 
<source lang="csharp">
 
<source lang="csharp">
22行目: 22行目:
 
</source>
 
</source>
  
==直線を描く==
+
== 直線を描く ==
 
よくあるMoveToとLineToである。似たような描画システムではLineToで描画されるのが一般的だが、[[CoreGraphics]]では最後にStrokePathを呼ばないと描画されない。
 
よくあるMoveToとLineToである。似たような描画システムではLineToで描画されるのが一般的だが、[[CoreGraphics]]では最後にStrokePathを呼ばないと描画されない。
 
<source lang="csharp">
 
<source lang="csharp">
30行目: 30行目:
 
</source>
 
</source>
  
==放射状の線を描く==
+
== 放射状の線を描く ==
 
放射状の線を描くカスタムビュー。カスタムビューの詳細は「[[Xamarin.Mac/カスタムコントロールを使用する]]」を参照。
 
放射状の線を描くカスタムビュー。カスタムビューの詳細は「[[Xamarin.Mac/カスタムコントロールを使用する]]」を参照。
 
やってることは線を描くのと同じである。
 
やってることは線を描くのと同じである。
62行目: 62行目:
 
</source>
 
</source>
  
==丸を描く==
+
== 丸を描く ==
 
丸は四角形で指定する。
 
丸は四角形で指定する。
 
丸だけはStrokePathやFillPathではなくStrokeEllipseInRectとFillEllipseInRectなっている。
 
丸だけはStrokePathやFillPathではなくStrokeEllipseInRectとFillEllipseInRectなっている。
71行目: 71行目:
 
</source>
 
</source>
  
==描画内容をファイルに保存する==
+
== 関連項目 ==
[[Xamarin.Mac/NSViewの描画内容をファイルに保存する]]」を参照。
+
* [[CoreGraphics]]
 +
* [[Xamarin.Mac/CGImageをNSImageに変換する]]
 +
* [[Xamarin.Mac/NSViewの描画内容をファイルに保存する]]
 +
* [[Xamarin.Mac/NSOpenGLViewを使う]]
  
[[CoreGraphics]]はあまり関係ない。
+
== 参考文献 ==
 
 
==関連項目==
 
*[[CoreGraphics]]
 
 
 
==参考文献==
 
 
{{reflist}}
 
{{reflist}}
  

2017年3月31日 (金) 07:04時点における版

CGContextを取得する

NSGraphicsからCGContextを取得する。

    var nsContext = NSGraphicsContext.CurrentContext;
    var cgContext = NSGraphicsContext.CurrentContext.GraphicsPort;

線幅、線色、塗る潰し色

色指定はRGBだが一般的な0〜255ではなく0.0〜1.0の浮動小数点で指定する。 色指定はCMYKでもでき、こちらも0.0〜1.0の範囲の浮動小数点となる。

    cgContext.SetLineWidth(2.0f);
    cgContext.SetStrokeColor(red: 0.0f, green: 0.0f, blue: 0.0f, alpha: 1.0f);
    cgContext.SetFillColor(cyan: 1.0f, magenta: 1.0f, yellow: 1.0f, black: 1.0f, alpha: 1.0f);

四角形を描く

画面初期化でよく使う四角形である。

    cgContext.SetFillColor(1.0f, 1.0f, 1.0f, 1.0f);
    cgContext.FillRect(dirtyRect);

直線を描く

よくあるMoveToとLineToである。似たような描画システムではLineToで描画されるのが一般的だが、CoreGraphicsでは最後にStrokePathを呼ばないと描画されない。

    cgContext.MoveTo(100, 100);
    cgContext.AddLineToPoint(200, 200);
    cgContext.StrokePath();

放射状の線を描く

放射状の線を描くカスタムビュー。カスタムビューの詳細は「Xamarin.Mac/カスタムコントロールを使用する」を参照。 やってることは線を描くのと同じである。

    public class RadialLineView : NSView
    {
        //〜〜〜省略〜〜〜

        public override void DrawRect(CGRect dirtyRect)
        {
            base.DrawRect(dirtyRect);

            var context = NSGraphicsContext.CurrentContext.GraphicsPort;

            var length = dirtyRect.Width / 2;
            var divide = 90;
            for (int i = 0; i < divide; i++)
            {
                var x1 = dirtyRect.X + (dirtyRect.Width / 2);
                var y1 = dirtyRect.Y + (dirtyRect.Height / 2);
                context.MoveTo(x1, y1);

                var x2 = (nfloat)(Math.Cos(2 * Math.PI / divide * i) * length ) + x1;
                var y2 = (nfloat)(Math.Sin(2 * Math.PI / divide * i) * length ) + y1;
                context.AddLineToPoint(x2, y2);

                context.StrokePath();
            }
        }
    }

丸を描く

丸は四角形で指定する。 丸だけはStrokePathやFillPathではなくStrokeEllipseInRectとFillEllipseInRectなっている。

    cgContext.SetLineWidth(2.0f);
    cgContext.SetStrokeColor(0.0f, 0.0f, 0.0f, 1.0f);
    cgContext.StrokeEllipseInRect(dirtyRect);

関連項目

参考文献