<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B</id>
	<title>Xamarin.MacでNSPathをCGPathに変換する - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://monobook.org/w/index.php?action=history&amp;feed=atom&amp;title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&amp;action=history"/>
	<updated>2026-06-04T14:46:32Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&amp;diff=8736&amp;oldid=prev</id>
		<title>imported&gt;Administrator: Administrator がページ「Xamarin.Mac/NSPathをCGPathに変換する」を「Xamarin.MacでNSPathをCGPathに変換する」に移動しました</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&amp;diff=8736&amp;oldid=prev"/>
		<updated>2019-05-22T05:13:01Z</updated>

		<summary type="html">&lt;p&gt;Administrator がページ「&lt;a href=&quot;/wiki/Xamarin.Mac/NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&quot; class=&quot;mw-redirect&quot; title=&quot;Xamarin.Mac/NSPathをCGPathに変換する&quot;&gt;Xamarin.Mac/NSPathをCGPathに変換する&lt;/a&gt;」を「&lt;a href=&quot;/wiki/Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&quot; title=&quot;Xamarin.MacでNSPathをCGPathに変換する&quot;&gt;Xamarin.MacでNSPathをCGPathに変換する&lt;/a&gt;」に移動しました&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2019年5月22日 (水) 05:13時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>imported&gt;Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&amp;diff=8735&amp;oldid=prev</id>
		<title>imported&gt;Administrator: /* 使い方 */</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&amp;diff=8735&amp;oldid=prev"/>
		<updated>2017-06-13T04:22:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;使い方&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2017年6月13日 (火) 04:22時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l50&quot;&gt;50行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;50行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 使い方 ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 使い方 ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ベジェ曲線描いてみた。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;線を描いてみた。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         public override void DrawRect(CGRect dirtyRect)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         public override void DrawRect(CGRect dirtyRect)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Administrator</name></author>
	</entry>
	<entry>
		<id>https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&amp;diff=8734&amp;oldid=prev</id>
		<title>imported&gt;Administrator: ページの作成:「CoreGraphicsのCGPath系にはベジェ曲線を手軽に扱えるクラスがない。 一方でNSPath系にはNSBezierPathというズバリなものがある...」</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSPath%E3%82%92CGPath%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B&amp;diff=8734&amp;oldid=prev"/>
		<updated>2017-06-13T04:09:20Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「&lt;a href=&quot;/wiki/CoreGraphics&quot; class=&quot;mw-redirect&quot; title=&quot;CoreGraphics&quot;&gt;CoreGraphics&lt;/a&gt;のCGPath系には&lt;a href=&quot;/w/index.php?title=%E3%83%99%E3%82%B8%E3%82%A7%E6%9B%B2%E7%B7%9A&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;「ベジェ曲線」 (存在しないページ)&quot;&gt;ベジェ曲線&lt;/a&gt;を手軽に扱えるクラスがない。 一方でNSPath系にはNSBezierPathというズバリなものがある...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[CoreGraphics]]のCGPath系には[[ベジェ曲線]]を手軽に扱えるクラスがない。&lt;br /&gt;
一方でNSPath系にはNSBezierPathというズバリなものがある。&lt;br /&gt;
なら変換してしまえばいいんじゃね。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
拡張メソッド追加してみた。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using Foundation;&lt;br /&gt;
using AppKit;&lt;br /&gt;
using CoreGraphics;&lt;br /&gt;
&lt;br /&gt;
    public static class NSBezierPathExtensions&lt;br /&gt;
    {&lt;br /&gt;
        public static CGPath ToCGPath(this NSBezierPath nsPath)&lt;br /&gt;
        {&lt;br /&gt;
            var cgPath = new CGPath();&lt;br /&gt;
            var points = null as CGPoint[];&lt;br /&gt;
&lt;br /&gt;
            for (int i = 0; i &amp;lt; nsPath.ElementCount; i++)&lt;br /&gt;
            {&lt;br /&gt;
                var type = nsPath.ElementAt(i, out points);&lt;br /&gt;
&lt;br /&gt;
                switch (type)&lt;br /&gt;
                {&lt;br /&gt;
                    case NSBezierPathElement.MoveTo:&lt;br /&gt;
                        cgPath.MoveToPoint(points[0]);&lt;br /&gt;
                        break;&lt;br /&gt;
&lt;br /&gt;
                    case NSBezierPathElement.LineTo:&lt;br /&gt;
                        cgPath.AddLineToPoint(points[0]);&lt;br /&gt;
                        break;&lt;br /&gt;
&lt;br /&gt;
                    case NSBezierPathElement.CurveTo:&lt;br /&gt;
                        cgPath.AddCurveToPoint(cp1: points[0], cp2: points[1], point: points[2]);&lt;br /&gt;
                        break;    &lt;br /&gt;
&lt;br /&gt;
                    case NSBezierPathElement.ClosePath:&lt;br /&gt;
                        cgPath.CloseSubpath();&lt;br /&gt;
                        break;    &lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            return cgPath;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
ベジェ曲線描いてみた。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
        public override void DrawRect(CGRect dirtyRect)&lt;br /&gt;
        {&lt;br /&gt;
            // 準備&lt;br /&gt;
            var cg = NSGraphicsContext.CurrentContext.GraphicsPort;&lt;br /&gt;
            cg.SetFillColor(red: 1.0f, green: 0.0f, blue: 0.0f, alpha: 1.0f);&lt;br /&gt;
            cg.SetStrokeColor(red: 0.0f, green: 1.0f, blue: 1.0f, alpha: 1.0f);&lt;br /&gt;
            cg.SetLineWidth(w: 2.0f);&lt;br /&gt;
&lt;br /&gt;
            // パス&lt;br /&gt;
            using (var path = new NSBezierPath())&lt;br /&gt;
            {&lt;br /&gt;
                // 形状の始点を設定する&lt;br /&gt;
                path.MoveTo(new CGPoint(100f, 0f));&lt;br /&gt;
&lt;br /&gt;
                // 線を引く&lt;br /&gt;
                path.LineTo(new CGPoint(200f, 40f));&lt;br /&gt;
                path.LineTo(new CGPoint(160f, 140f));&lt;br /&gt;
                path.LineTo(new CGPoint(40f, 140f));&lt;br /&gt;
                path.LineTo(new CGPoint(0f, 40f));&lt;br /&gt;
&lt;br /&gt;
                // 形状を閉じる&lt;br /&gt;
                path.ClosePath();&lt;br /&gt;
&lt;br /&gt;
                // NSPath -&amp;gt; CGPath &lt;br /&gt;
                // ※ToCGPathは独自の拡張メソッド&lt;br /&gt;
                cg.AddPath(path.ToCGPath());&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // 塗りつぶす&lt;br /&gt;
            cg.FillPath();&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[Xamarin.Mac/CoreGraphicsの基本的な使い方]]&lt;br /&gt;
* [[Interface Builder/基本的な使い方‎]]&lt;br /&gt;
* [[Xamarin.Mac/ウインドウ座標をビュー座標に変換する]]&lt;br /&gt;
* [[Xamarin.Mac/マウスの中ボタン(ホイール)のクリックを取得する]]&lt;br /&gt;
* [[Xamarin.Mac/NSViewでドラッグアンドドロップを受け付ける]]&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[category: Xamarin.Mac]]&lt;br /&gt;
[[category: Core Graphics]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Administrator</name></author>
	</entry>
</feed>