コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
Xamarin.MacでNSImageを回転させる
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
NSImageをサクッと回転させたい。 動くことは動いたが負荷を計測したところ微妙に重いようなので次回はCGImageを回転させてみようと思う。 <source lang="csharp"> using System; using AppKit; using Foundation; using CoreGraphics; public static class NSImageExtensions { public static NSImage Rotate(this NSImage nsImage, float degrees) { degrees = degrees % 360f; if (degrees == 0f) {// 回転の必要なし return nsImage; } CGSize size = nsImage.Size; CGSize maxSize; if (90f == degrees || 270f == degrees || -90f == degrees || -270f == degrees) { maxSize = new CGSize(size.Height, size.Width); } else if (180f == degrees || -180f == degrees) { maxSize = size; } else { maxSize = new CGSize(20 + NMath.Max(size.Width, size.Height), 20 + NMath.Max(size.Width, size.Height)); } var rot = new NSAffineTransform(); rot.RotateByDegrees(degrees); var center = new NSAffineTransform(); center.Translate(deltaX: maxSize.Width / 2, deltaY: maxSize.Height / 2); rot.AppendTransform(center); // 新しい画像 var newImage = new NSImage(maxSize); // 描画 newImage.LockFocus(); rot.Concat(); var rect = new CGRect(0, 0, size.Width, size.Height); var corner = new CGPoint(-size.Width / 2, -size.Height / 2); nsImage.Draw(point: corner, fromRect: rect, op: NSCompositingOperation.Copy, delta: 1.0f); newImage.UnlockFocus(); return newImage; } } </source> == 関連項目 == * [[Xamarin.Mac/CGImageをNSImageに変換する]] * [[Xamarin.Mac/NSImageをファイルに保存する]] * [[Xamarin.Mac/NSViewの座標系を左下原点から左上原点に変更する]] [[category: Xamarin.Mac]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化