「Xamarin.MacでNSImageをSystem.Drawing.Imageに変換する」の版間の差分
編集の要約なし |
imported>Administrator 細 Administrator がページ「Xamarin.Mac/NSImageをSystem.Drawing.Imageに変換する」を「Xamarin.MacでNSImageをSystem.Drawing.Imageに変換する」に移動しました |
||
| (他の1人の利用者による、間の4版が非表示) | |||
| 1行目: | 1行目: | ||
Xamarin.MacにおいてAppKit.NSImageをSystem.Drawing.Imageに変換する方法を試行錯誤している。 | |||
==方法1== | ==方法1== | ||
| 7行目: | 7行目: | ||
using System.Drawing; | using System.Drawing; | ||
using System.IO; | using System.IO; | ||
using | using Foundation; | ||
using | using AppKit; | ||
public static class NSImageExtentions | public static class NSImageExtentions | ||
| 25行目: | 25行目: | ||
</source> | </source> | ||
なお、Xamarin.Macのクラス群はほぼDisposeメソッドを実装しており[[メモリリーク]]を防ぐためにも「using」が重要となる。 | |||
大容量の[[メモリ]]を搭載している昨今の[[Mac]]では多少の[[メモリリーク]] | 大容量の[[メモリ]]を搭載している昨今の[[Mac]]では多少の[[メモリリーク]]をしても大して問題にならないが、QTKitやAV Foundationを使った[[ビデオキャプチャ]]などでは1/30秒や1/60秒といった速度で1フレームごとに上記のような処理が走るため、Dispose呼出を怠ると凄い勢いで[[メモリリーク]]することになる。 | ||
これに加えてビデオキャプチャではSystem.GC.Collectメソッドの手動実行も重要な場合がある。 | これに加えてビデオキャプチャではSystem.GC.Collectメソッドの手動実行も重要な場合がある。 | ||
ビデオキャプチャなどの常時負荷が高い状況化では[[ガベージコレクション]]の自動実行だけでは処理が追いつかない場合があるようだ。 | ビデオキャプチャなどの常時負荷が高い状況化では[[ガベージコレクション]]の自動実行だけでは処理が追いつかない場合があるようだ。 | ||
ちなみにSystem.GC.Collectをメインスレッド以外で実行しても効果がないようだ。 | ちなみにSystem.GC.Collectをメインスレッド以外で実行しても効果がないようだ。 | ||
凄い嵌った。 | 凄い嵌った。 | ||
==関連項目== | == 関連項目 == | ||
*[[ | * [[Xamarin.Mac]] | ||
*[[ | * [[Xamarin.Mac/NSImageをファイルに保存する]] | ||
*[[ | * [[Xamarin.Mac/System.Drawing.ImageをNSImageに変換する]] | ||
==参考文献== | == 参考文献 == | ||
{{reflist}} | {{reflist}} | ||
| 45行目: | 44行目: | ||
[[category:MonoMac]] | [[category:MonoMac]] | ||
[[category:Xamarin.Mac]] | |||