午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

#ソフトウェア

画像の色相の状態をレーダーチャートふうに表示してみた

画像の上にあるくしゃくしゃしたのがそれ 想像していたのよりしょんぼりした感じなのができあがった 要素数は360で作成 レーダーチャート エクセルのレーダーチャート これの要素数は11 HSVのSとVをMAXにしてH(色相)を際立たせた感じにする ニセサーモグラフ…

WPF、アプリの実行ファイルに画像ファイルを埋め込んで、それを取り出して表示するまでの手順メモ

デザイン画面 画像を表示するようのImageを追加しただけ using System.Windows; using System.Windows.Media.Imaging; namespace _20190331_画像埋め込み { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Syste…

画像の使用色数とその色のピクセル数を表示するアプリその5

おとといからの方法で市松模様を下敷きにして 半透明の色を見た目でもわかるようにした たったこれだけなんだけど思っていたよりかなり手間がかかった(3日)w 完全不透明、A=255 完全透明、A=0 半透明 61~76行目をコメントアウトして 変わりにこの部分をC#…

ListBoxのItemTemplate(DataTemplate)をC#コードで

デザイン画面 MainWindow.xaml MainWindow.xaml.cs using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; using System.Windows.Media.Imaging; //ListBoxの要…

無限の透明市松模様をWriteableBitmapとImageBrushのタイル表示で作成

ウィンドウのサイズに合わせて背景の市松模様が表示される どこまでも続く透明市松模様 デザイン画面 MainWindow.xaml GridにMyGridっていう名前をつけただけ MainWindow.xaml.cs using System.Windows; using System.Windows.Media; using System.Windows.M…

画像の使用色数とその色のピクセル数を表示するアプリその4

ボタン3つ追加した 降順、昇順の切り替え 画像の等倍表示と縮小表示の切り替え リストの背景色切り替え 白→灰色→黒→白に戻る これで白色グラフも見えるようになった ギットハブ count_color/CountColor/CountColor at master count_color/CountColor/CountCo…

ビット演算ビットシフトメモ、画像の使用色数と色ごとのピクセル数カウント

RGB(byte)からint(long)型へ 普通の計算の場合 V = G * 256) + (B * 256 * 256) ビットシフト、ビット演算の場合 V = R | (G << 8) | (B << 16) int(long)型からRGB(byte型)へ 普通の計算の場合、%(mod)は割り算の余り 10%3=1、10割る3の余りは1 R = V % 256…

画像の使用色数を表示するアプリその3

レイアウト変更 使用ピクセル数が多い順に上から128色までリストに表示するようにしてみた 右のリストから選んだ色の情報は左上に表示するようにした その色のHSVと使用率と順位の表示を追加 この画像だと5.47%が使用率で6が順位、順位はListBoxのSelectedIn…

色相環画像作成、WriteableBitmapとImage.Clip

一番右のが目的の色相環 いきなりImage4の画像を作成しようとしても難しくてできなかったので Image2を作って、あとはImageクラスのClipプロパティにEllipseGeometryを指定して切り抜いて作成した 以前作ったRGBとHSVを相互変換するhsv.dllを参照に追加して…

画像の使用色数を表示するアプリその2

昨日の方法を使って棒グラフがウィンドウ幅に合わせて伸縮するようにした 選択した色の情報表示するようにした 16進数とARGB形式、総ピクセル数に占める割合 16色に減色した画像 グラフは色数が少ない画像のほうが面白い 普通の写真画像だと同じような色が並…

ListBoxで棒グラフ、MultiBindingを使ってListBox幅と要素幅を連動

ListBoxで棒グラフ…ちょっと何言ってるか分からないですね… MultiBingingを使って ListBoxの幅に合わせて要素の幅を変更している 上半分のListBoxは失敗例で 下半分が期待通りにできたListBox Bindingソース1 ListBoxのActualWidth Bindingソース2 DataConte…

画像の使用色数を表示するアプリ作ってみた

画像の使用色数と使用数が多い上位10色を表示 起動したところ ここに画像ファイルをドロップする 画像は 普通の写真画像、サイズは1024x768 これをドロップで 使用されている色数が表示される この画像は86151色だった カウント開始ボタンを押すと 使用され…

半透明画像とWPFのPixelFormats.Pbgra32は相性が良くないかも

半透明(アルファが255未満)のピクセルがある画像を、FormatConvertedBitmapを使ってPixelFormatをPixelFormats.Pbgra32に変更すると色が変わってしまう なのでPixelFormatはBgra32が良さそう 半透明の青一色のpng形式の画像 ARGB=100,30,122,224 16進数だと…

以前イベントで処理していたのをBindingにしてC#とXAMLで書いてみた

イベントで処理していたのをBindingに変更してC#とXAMLの両方で書いてみたけど どっちがいいのかよくわからん 動作自体は前のときと同じ Sliderの変更で画像の表示倍率を変更、画面より大きくなったらスクロールバーを表示 配置 Slider 拡大率指定用 ScrollV…

WPFのListBoxでいろいろ、Binding、見た目の変更、横リスト

ListBoxでのデータバインディングと見た目の変更とか 横表示は ListBox.ItemsPanel ItemsPanelTemplate StackPanel Orientation="Horizontal" リストに表示される要素の見た目の変更は ListBox.ItemTemplate DataTemplate StackPanel Border TextBlock /Stac…

WPF?画面上のどこでもマウスカーソル下の色を取得

画面上のどこでもマウスカーソル下の色を取得 クリックでもその色を取得 自身のウィンドウ内のカーソルの位置や色の取得ならWPFにも用意されているんだけど、自身のウィンドウ外、画面上のどこでもって場合にはWPFだけではできないようで、Windows APIやWind…

画像で使われている色を3D散布図で表示してみた、Pythonとmatplotlibすごい

画像で使われているすべての色を表示するのは処理が重すぎたので、等間隔で色を取得 この画像で使われている100ピクセル分の色を3D散布図で表示してみた 使ったアプリと言語は Visual Studio 2017とPythonとmatplotlib Pythonは初めて使ったので初投稿です P…

任意の2色に減色するときディザリングパターンを使う

任意の2色に減色するときディザリングパターンを使う 元画像のピクセルの色が 元のRGB=(50, 140, 200)で 減色用パレットから元の色に近い色を2色選んだら 色1RGB=(77, 159, 166) 色2RGB=(68, 72, 212) だったとき 2x2のディザリングパターンを使ってどうなれ…

カラー画像を1bpp(1bit)白黒画像に変換アプリver1.1、閾値の自動設定、大津の二値化でできたかも

大津の二値化を使った白黒画像できたかも 1年前に作った カラー画像を1bppの白黒2値化するアプリは 白黒の閾値は手動で設定か、画像全体の輝度平均で指定していたのを 自動で設定する、自動1と自動2を付け足した ついでに見た目も少し変更してver1.1 元の…

WPF、Parallel.Invoke、並列実行は昨日より速く

昨日の続き 目的は昨日と同じで画像処理を考えて、RGB順に並んだbyte型配列から、RGBそれぞれの配列を作成、それぞれの最小値、最大値、平均値(double型)を求める 結果 一番上が昨日、一番下が今回最速で 昨日より2倍くらい速くできた CPU使用率 録画で20%く…

LINQのMin、Max、Average使ってみたけど遅い、画像処理には向かない

LINQはとても便利だけど場合によっては遅い 今回試したのは画像処理で使うbyte型配列 ここからRGBそれぞれの配列と最低値、最大値、平均値を求めたい これらは減色処理で使う ピクセルフォーマットがRGBの場合はRGBの順番で並んでいる [R,G,B,R,G,B…] 変数名…

WPF色一覧表示してHSVで並べ替えするアプリできた

WPF色一覧表示と並べ替え System.Windows.Media.Colorの中の色一覧を表示 並べ替えは 色の名前順(昇順ソート) H:色相(昇順ソート) S:彩度(昇順ソート) V:明度(降順ソート) YUVのY:輝度(降順ソート) 一覧マスをクリックで色の詳細表示と見本枠の背景色変…

WPF、ScrollViewerの中の要素をマウスドラッグ移動しているように見せかける

サイズが1024x768画像をScrollViewerの中に置いたImageに表示して マウスドラッグ移動で画像の表示位置を変更 画像を動かしているように見えるけど 実際に動かしているのはスクロールバー デザイン画面 ScrollViewer ┗Image コード using System; using Syst…

WPF、スクロールバーの同期、2つの画像を並べて拡大して見比べたい、ScrollViewer

同じ大きさの2つの画像を並べて拡大して見比べたい 右画像は左を16色に減色したもの デザイン画面 <feff></feff>

WPF、マウスドラッグ移動でなめらかな曲線を描画、PolyBezierSegment

マウスドラッグ移動(右クリック)でベジェ曲線 できた! 4ヶ月前の2018/6/24のときには こうだったからだいぶ良くなった 夏が春くらいの暑さならもっと良かったんだけどねえ 線の端を丸める これは単にPathの設定を変えただけで 764行目からの3行でそれぞれ …

WPF、ベジェ曲線、違和感なく滑らかになるような制御点座標はどこ?その3(終)

前回で方向線角度を求めることができたので 距離を与えてベジェ曲線を表示してみる 距離の決め方は前々回と同じ感じで A0:方向線距離(長さ)0は直線 A1:前後アンカー点間距離の0.3倍 C1:前後アンカー点距離平均の0.3倍 C2:前後アンカー点距離それぞれの0.…

WPF、ベジェ曲線、違和感なく滑らかになるような制御点座標はどこ?その2、アプリでの角度とラジアン、座標から角度

VBやC#だと便利な三角関数が用意されているけど、角度じゃなくてラジアンが基本になる ラジアンは日本語だと弧度っていうらしい 角度とラジアン 角度の180度はラジアンだと3.14、パイだと1パイ(π) ラジアンを角度に変換する ラジアン/パイ*180 = 角度 アプリ…

WPF、ベジェ曲線、違和感なく滑らかになるような制御点座標はどこ?その1

指定した点を通る違和感のない滑らかなベジェ曲線を引きたい 今まで gogowaten.hatenablog.com マウスクリックでCanvasにベジェ曲線で曲線、PolyBezierSegment ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ https://blogs.yahoo.co.jp/gogowaten/1…

マウスドラッグ(移動)で線を描画、CanvasにPolyline

前回まではクリックしたところを線を中継する頂点にして線を描いていたけど これをマウスの動いたとおりの線を描いてみたくなった エクセルの図形のフリーハンドみたいなの WPFには似たことができるInkCanvasっていう、パネルコントロールがあるんだけど、使…

Polyline折れ線からベジェ曲線作成と曲げ具合

Polylineの折れ線からベジェ曲線 このPolylineを使って描いた折れ線から このベジェ曲線を作成 C#コード using System.Windows; using System.Windows.Media; namespace _20180623_折れ線をベジェ曲線に { public partial class MainWindow : Window { publi…