<?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%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B</id>
	<title>Xamarin.MacでNSImageを回転させる - 版の履歴</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%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B"/>
	<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B&amp;action=history"/>
	<updated>2026-06-05T11:18:11Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B&amp;diff=9067&amp;oldid=prev</id>
		<title>imported&gt;Administrator: Administrator がページ「Xamarin.Mac/NSImageを回転させる」を「Xamarin.MacでNSImageを回転させる」に移動しました</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B&amp;diff=9067&amp;oldid=prev"/>
		<updated>2019-05-22T05:13:10Z</updated>

		<summary type="html">&lt;p&gt;Administrator がページ「&lt;a href=&quot;/wiki/Xamarin.Mac/NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B&quot; class=&quot;mw-redirect&quot; title=&quot;Xamarin.Mac/NSImageを回転させる&quot;&gt;Xamarin.Mac/NSImageを回転させる&lt;/a&gt;」を「&lt;a href=&quot;/wiki/Xamarin.Mac%E3%81%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B&quot; title=&quot;Xamarin.MacでNSImageを回転させる&quot;&gt;Xamarin.MacでNSImageを回転させる&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%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B&amp;diff=9066&amp;oldid=prev</id>
		<title>imported&gt;Administrator: ページの作成:「NSImageをサクッと回転させたい。 動くことは動いたが負荷を計測したところ微妙に重いようなので次回はCGImageを回転させてみ...」</title>
		<link rel="alternate" type="text/html" href="https://monobook.org/w/index.php?title=Xamarin.Mac%E3%81%A7NSImage%E3%82%92%E5%9B%9E%E8%BB%A2%E3%81%95%E3%81%9B%E3%82%8B&amp;diff=9066&amp;oldid=prev"/>
		<updated>2017-11-01T07:14:55Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「NSImageをサクッと回転させたい。 動くことは動いたが負荷を計測したところ微妙に重いようなので次回はCGImageを回転させてみ...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;NSImageをサクッと回転させたい。&lt;br /&gt;
動くことは動いたが負荷を計測したところ微妙に重いようなので次回はCGImageを回転させてみようと思う。&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 AppKit;&lt;br /&gt;
    using Foundation;&lt;br /&gt;
    using CoreGraphics;&lt;br /&gt;
&lt;br /&gt;
    public static class NSImageExtensions&lt;br /&gt;
    {&lt;br /&gt;
        public static NSImage Rotate(this NSImage nsImage, float degrees)&lt;br /&gt;
        {&lt;br /&gt;
            degrees = degrees % 360f;&lt;br /&gt;
            if (degrees == 0f)&lt;br /&gt;
            {// 回転の必要なし&lt;br /&gt;
                return nsImage;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            CGSize size = nsImage.Size;&lt;br /&gt;
            CGSize maxSize;&lt;br /&gt;
            if (90f == degrees || 270f == degrees || -90f == degrees || -270f == degrees)&lt;br /&gt;
            {&lt;br /&gt;
                maxSize = new CGSize(size.Height, size.Width);&lt;br /&gt;
            }&lt;br /&gt;
            else if (180f == degrees || -180f == degrees)&lt;br /&gt;
            {&lt;br /&gt;
                maxSize = size;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                maxSize = new CGSize(20 + NMath.Max(size.Width, size.Height), 20 + NMath.Max(size.Width, size.Height));&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var rot = new NSAffineTransform();&lt;br /&gt;
            rot.RotateByDegrees(degrees);&lt;br /&gt;
&lt;br /&gt;
            var center = new NSAffineTransform();&lt;br /&gt;
            center.Translate(deltaX: maxSize.Width / 2, deltaY: maxSize.Height / 2);&lt;br /&gt;
            rot.AppendTransform(center);&lt;br /&gt;
&lt;br /&gt;
            // 新しい画像&lt;br /&gt;
            var newImage = new NSImage(maxSize);&lt;br /&gt;
&lt;br /&gt;
            // 描画&lt;br /&gt;
            newImage.LockFocus();&lt;br /&gt;
            rot.Concat();&lt;br /&gt;
            var rect = new CGRect(0, 0, size.Width, size.Height);&lt;br /&gt;
            var corner = new CGPoint(-size.Width / 2, -size.Height / 2);&lt;br /&gt;
            nsImage.Draw(point: corner, fromRect: rect, op: NSCompositingOperation.Copy, delta: 1.0f);&lt;br /&gt;
            newImage.UnlockFocus();&lt;br /&gt;
&lt;br /&gt;
            return newImage;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[Xamarin.Mac/CGImageをNSImageに変換する]]&lt;br /&gt;
* [[Xamarin.Mac/NSImageをファイルに保存する]]&lt;br /&gt;
* [[Xamarin.Mac/NSViewの座標系を左下原点から左上原点に変更する]]&lt;br /&gt;
&lt;br /&gt;
[[category: Xamarin.Mac]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Administrator</name></author>
	</entry>
</feed>