メインメニューを開く

差分

Xamarin.MacでCoreGraphicsの基本的な使い方

3,001 バイト追加, 2015年8月20日 (木) 06:25
ページの作成:「==CGContextを取得する== NSGraphicsからCGContextを取得する。 <source lang="csharp"> var nsContext = NSGraphicsContext.CurrentContext; var cgContext =...」
==CGContextを取得する==
NSGraphicsからCGContextを取得する。
<source lang="csharp">
var nsContext = NSGraphicsContext.CurrentContext;
var cgContext = NSGraphicsContext.CurrentContext.GraphicsPort;
</source>

==線幅、線色、塗る潰し色==
色指定は[[RGB]]だが一般的な0〜255ではなく0.0〜1.0の[[浮動小数点]]で指定する。
色指定は[[CMYK]]でもでき、こちらも0.0〜1.0の範囲の浮動小数点となる。
<source lang="csharp">
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);
</source>

==四角形を描く==
画面初期化でよく使う四角形である。
<source lang="csharp">
cgContext.SetFillColor(1.0f, 1.0f, 1.0f, 1.0f);
cgContext.FillRect(dirtyRect);
</source>

==直線を描く==
よくあるMoveToとLineToである。似たような描画システムではLineToで描画されるのが一般的だが、[[CoreGraphics]]では最後にStrokePathを呼ばないと描画されない。
<source lang="csharp">
cgContext.MoveTo(100, 100);
cgContext.AddLineToPoint(200, 200);
cgContext.StrokePath();
</source>

==放射状の線を描く==
放射状の線を描くカスタムビュー。カスタムビューの詳細は「[[Xamarin.Mac/カスタムコントロールを使用する]]」を参照。
やってることは線を描くのと同じである。
<source lang="csharp">
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();
}
}
}
</source>

==丸を描く==
丸は四角形で指定する。
丸だけはStrokePathやFillPathではなくStrokeEllipseInRectとFillEllipseInRectなっている。
<source lang="csharp">
cgContext.SetLineWidth(2.0f);
cgContext.SetStrokeColor(0.0f, 0.0f, 0.0f, 1.0f);
cgContext.StrokeEllipseInRect(dirtyRect);
</source>

==描画内容をファイルに保存する==
「[[Xamarin.Mac/NSViewの描画内容をファイルに保存する]]」を参照。

[[CoreGraphics]]はあまり関係ない。

==関連項目==
*[[CoreGraphics]]

==参考文献==
{{reflist}}

{{stub}}

[[category:Xamarin.Mac]]
匿名利用者