WPF/WinRT の事はこちらへ:
カラーマネジメントシステムの概要 と カラマネプログラミング初歩 – CAT EARS
結論
- 出来なくはないがちょいと面倒
- WinRT の頃とさほど変わってない
- モバイルでも動くようになったのが大きな違い
UWP で使えるコンポーネントのカラマネ対応状況
|
UWP API |
C++/CX |
Win2D |
SharpDX |
モニタプロファイルの取得 |
○ |
○ |
○ |
○ |
埋め込みプロファイルの取得 |
✕ |
○ |
✕ |
○ |
プロファイルを使った画像の色変換 |
✕ |
○ |
○ |
○ |
変換結果の描写 |
○ |
○ |
○ |
○ |
UWP API
- API 事情は WinRT 時代から変わってない
- モニタプロファイルの取得はできるものの、
IRandomAccessStream
でしかないので単独では役に立たない
- 描写は出来ても色変換できなければ意味が無い
処理 |
API |
モニタプロファイルの取得 |
DisplayInformation でできる |
埋め込みプロファイルの取得 |
できない |
プロファイルを使った画像の色変換 |
できない |
変換結果の描写 |
Image コントロールとか |
C++/CX
- こちらも API 事情は WinRT 時代から変わってない
- だが Windows 10 Mobile でも使えるようになった!
- CMYK は Direct2D では対応していないので、 WIC で変換するなどの工夫が必要になる
処理 |
API |
モニタプロファイルの取得 |
DisplayInformation でできる |
埋め込みプロファイルの取得 |
WIC の IWICBitmapFrameDecode でできる |
プロファイルを使った画像の色変換 |
WIC の IWICColorTransform や Direct2D の Color management effect でできる |
変換結果の描写 |
SurfaceImageSource とか WriteableBitmap とかでできる |
Win2D
- これも Mobile で動く!
- 1.14.0 から
ColorManagementEffect
が使えるようになった
- だが Direct2D であるので CMYK には対応していない
- 1.18.0 時点では埋め込みプロファイルの取得手段がないので、 WIC などを使って自力で取得する必要がある
- プロファイルの
byte[]
が取得できれば変換できるようになる
CanvasBitmap
あたりが対応してくれればいいのに……
処理 |
API |
モニタプロファイルの取得 |
DisplayInformation でできる |
埋め込みプロファイルの取得 |
できない |
プロファイルを使った画像の色変換 |
ColorManagementEffect でできる |
変換結果の描写 |
CanvasImage コントロールとかでできる |
SharpDX
- 同じく Mobile でも動く!
- 基本的に C++/CX でやることを C# で書けますというやつなので、 C++/CX でやる場合と同じ
処理 |
API |
モニタプロファイルの取得 |
DisplayInformation でできる |
埋め込みプロファイルの取得 |
BitmapFrameDecode でできる |
プロファイルを使った画像の色変換 |
ColorTransform でできる |
変換結果の描写 |
WriteableBitmap とかでできる |
ぜんぜん関係ない記事にコメント申し訳ないのですが、https://github.com/veigr/EventMapHpViewerの輸送量計算で鬼怒改二の処理が抜けているのでお手すきの際にでも修正していただけると幸いです
申し訳ありませんが、こういった内容は GitHub Issues への記述をお願いします。
https://github.com/veigr/EventMapHpViewer/issues