「Xamarin.MacでCoreGraphicsの基本的な使い方」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==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> | ||
− | == | + | == 関連項目 == |
− | + | * [[CoreGraphics]] | |
+ | * [[Xamarin.Mac/CGImageをNSImageに変換する]] | ||
+ | * [[Xamarin.Mac/NSViewの描画内容をファイルに保存する]] | ||
+ | * [[Xamarin.Mac/NSOpenGLViewを使う]] | ||
− | + | == 参考文献 == | |
− | |||
− | |||
− | |||
− | |||
− | ==参考文献== | ||
{{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);
関連項目
- CoreGraphics
- Xamarin.Mac/CGImageをNSImageに変換する
- Xamarin.Mac/NSViewの描画内容をファイルに保存する
- Xamarin.Mac/NSOpenGLViewを使う