CountColor1.3.8
ダウンロード先はギットハブ
ファイル名:CountColor1.3.8.zip
貼付1ボタン
普通の画像ならこれで貼り付けできるはず
PrintScreenやAlt+PrintScreen、Win+Shift+s、他の画像アプリでのコピー
エクセルのセル範囲
セル範囲をコピーして
貼り付け1ボタンで貼り付けしたところ
エクセルのグラフも
貼り付けできた
エクセルの図形
貼り付け1だと透明な部分が白になってしまうので、用意したのが
貼り付け2ボタン
これなら透明部分が反映されるので
より正確な色数がわかる
画像背景の市松模様の表示の有無切り替え
市松模様ボタンで切り替えられる
クリップボードからの画像取得の処理部分
Clipboard.GetImage()で取得できるんだけど、WPFだとAlphaの値が0に置き換えられてしまう画像もあるので、すべてのピクセルのAlphaを操作して確認している、めんどくさいけどこれが確実、あとはエクセルのセルのコピーでもAlphaが0になるので、それも判定もしているけど、これは蛇足だったかも
Alphaを255に変更するのと、判定の処理
Alphaが全部0かどうかを判定するのがめんどくさいねえ
エクセルのデータ判定はデータのフォーマットが"EnhancedMetafile"ならエクセルのデータって判定している。よくわかっていないので誤判定があるかも
エクセルの図形用
Clipboard.GetDataObject().GetData("PNG");
で取得したものはMemoryStreamなので、それを使ってBitmapFrameのCreateメソッドでBitmapSourceを作成している、この方法は
こちらから
この方法だとpng形式で得られるみたいで、透明や半透明部分も再現されるがいいんだけど、残念なのはdpiが96以外になること、なるっていうかエクセルがそうしているみたい
ほんとはEnhancedMetafile形式で取得したのをBitmapSourceにできればいいんだけど、WPFだと普通にはできないみたい?WindowsFormならできるんだけどねえ
関連記事
前回は1年前
クリップボードの画像取得で色々試したのは5ヶ月前
このときすべてのピクセルのAlphaを判定するのが嫌だったので色々試したんだけどねえ