「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);

関連項目

参考文献