午後わてんのブログ

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

WPF、C# .NET

WPFのRectの重なり判定、RectangleGeometryにしてからFillContainsWithDetailメソッドでできた

2つのRectの重なり判定を、GeometryクラスのFillContainsWithDetailメソッドで行ってみた FillContainsWithDetailはIntersectionDetailを返すので、それを見て判定 IntersectionDetail 列挙型(System.Windows.Media) | Microsoft Docs //https://docs.micros…

WPF、画像から複数箇所を矩形(Rect)に切り抜いて、それぞれ位置を合わせて1枚の画像にしてファイルに保存する

表現が難しい、百聞は一見にしかず 元の画像と、切り抜き後の画像 こういうの 作っている環境 Visual Studio Community 2019 Windows 10 Home WPF .NET Core 5 C# 2021WPF/20210124_画像の切り抜き、複数画像を1枚にする github.com MainWindow.xaml

スクショアプリPixcrenの改善、ファイル名見本更新と日時書式一覧表

アプリの動作 github.com ダウンロード先 https://github.com/gogowaten/ScreenCapture/releases/download/1.1/Pixcren1.1.0.0.zip 2020/12/30 ver1.1 見本のリアルタイム更新と日時書式一覧表の追加した、細かくいうと 連番開始値を0にするボタン追加した …

スクショアプリできた!右クリックメニューを表示したエクセルもキャプチャできる

切り抜きとかトリミングとかめんどくさいのなしで エクセルのスクショ マウスカーソルも描画できる Microsoft Edgeのスクショ ScreenCapture/Pixcren github.com ダウンロード先 https://github.com/gogowaten/ScreenCapture/releases/download/1.0/Pixcren1…

アプリのウィンドウが非アクティブ状態でも任意のキーの入力を感知、WPFでグローバルホットキーの登録

アプリのウィンドウが非アクティブ状態でもキー入力を感知したくて以前試したのはこれ gogowaten.hatenablog.com でも、この方法ではタスクマネージャーなど、特定のアプリがアクティブウィンドウだと無反応だった これを解決したのが今回 グローバルホット…

画像にマウスカーソル画像を重ねて表示、アルファブレンドとビット演算のANDとXOR

前回でマウスカーソル画像を取得できたので、ウィンドウのキャプチャ画像に重ねてみた 普通の矢印カーソル 普通の矢印カーソルはアルファブレンド テキストエディタとかでのI型カーソル I型カーソルはマスク画像上半分をビット演算のANDしてから、下半分をXO…

表示しているマウスカーソル画像を取得表示してみた、WinAPIとWPF

テスト中 テスト用アプリ 0.1秒ごとにマウスカーソル画像をいくつかの方法で取得して表示している WinAPIを使ってカーソルのハンドルやカーソル画像のハンドルを取得して WPF(.NET)の System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon System.Wi…

WinAPIのGetAncestorでリボンメニューを開いた状態のエクセルウィンドウをキャプチャ

テスト用アプリ テスト用アプリ ダウンロード https://github.com/gogowaten/2020WPF/releases/download/1.0/20201117_.7z Release 1.0 · gogowaten/2020WPF github.com テスト用アプリ動作 右Ctrl+右Shiftで最前面ウィンドウをキャプチャする ウィンドウハ…

ウィンドウの見た目通りのRect取得はDwmGetWindowAttribute

C#での画面キャプチャの取得方法を徹底解説! | .NETコラム https://www.fenet.jp/dotnet/column/language/4633/ ここを見るのが早いかなあ DwmGetWindowAttribute //DWM(Desktop Window Manager) //見た目通りのRectを取得できる、引数のdwAttributeにDWM…

ウィンドウDCからのキャプチャではアルファ値が変なので、画面全体をキャプチャして切り抜き

メモ帳ウィンドウをAlt+PrintScreenでのスクショ、これが期待する結果なんだけど ウィンドウDC(デバイスコンテキスト)から作成する方法だと、スクロールバーしかキャプチャできない 水色のところは背景色なので殆どが透明になっている ウィンドウDC(デバイス…

マウスカーソルの下にあるウィンドウのRect取得してみた、GetWindowRectとGetClientRect

マウスカーソルの下にあるウィンドウのRect取得してるところ 2020WPF/20201111_カーソル下のウィンドウ取得 github.com GetWindowRectはタイトルバーや枠も含めた領域 GetClientRectは枠の内側の領域 MainWindow.xaml

非アクティブ時にもキーの状態を取得してみたWindowsAPIのGetAsyncKeyState

非アクティブ時にShift+Aの回数をカウントしているところ Timerで一定時間間隔ごとに GetAsyncKeyStateを実行してキーの状態を取得 2020WPF/20201110_WinApiでキーの状態取得 at master · gogowaten/2020WPF github.com 環境 Visual Studio Community 2019 .…

アプリの設定保存、ウィンドウ位置とリストボックスの文字列をファイルに保存、XML形式

アプリのウィンドウの位置とListboxに表示する文字列を、ファイルに保存と読み込みをWPF(.NET Core 3.1、C#)で試してみた github.com テキストボックスに文字を入れてリストに追加したところ 画面全体での位置 アプリのウィンドウの位置は左で 設定保存 この…

WPFにもNumericUpDownみたいなのをユーザーコントロールで、その7

フォントサイズによってサイズ変化 ControlLibraryCore20200620_v1.1.0.7z Releases · gogowaten/userControl https://github.com/gogowaten/userControl/releases github.com 設定例 プロパティ名 型 既定値 説明 MyValue decimal 0m 値 MyText String "" M…

.NET Core、WPF、ユーザーコントロールのDLLをアプリで使うまでの手順メモ

この前作ったユーザーコントロールを実際に使うまで ユーザーコントロールのdllファイル ControlLibraryCore20200620.7z これを適当なところに展開しておいて 新しいプロジェクトの作成 テンプレートの.NET CoreのWPFで作成 今回のユーザーコントロールは.NE…

WPFにもNumericUpDownみたいなのをユーザーコントロールで、その6

前回の gogowaten.hatenablog.com これに gogowaten.hatenablog.com このときのを取り入れて 「-0.」とかの入力と、書式も設定できるようになった TextBoxに数字の入力中にもMyValueに反映するようにした 書式の設定の入力中にもMyTextに反映するようにした …

WPF、数値とBindingしたテキストボックスに「0.」とか「-0」とか「-0.」を入力したい

数値とBindingしたテキストボックス 2020WPF/20200625_decimalTextBox at master · gogowaten/2020WPF github.com 目的 テキストボックスと数値型依存関係プロパティのリアルタイム連動 数値型の依存関係プロパティとTextBoxのTextPropertyをBinding TextPro…

WPFにもNumericUpDownみたいなのをユーザーコントロールで、その5

昨日の続き 下限値と上限値を設定できるようにした 今回でNumericUpDownは完成 userControl/ControlLibraryCore20200620 at 0624_2341_blog · gogowaten/userControl github.com UserControl.xaml

WPFにもNumericUpDownみたいなのをユーザーコントロールで、その4

昨日の続きで、変更値が1で固定だったのを変更できるようにした 小変更はボタンクリック or テキストボックス上でホイール、大変更はボタン上でホイール github.com UserControl.xaml.cs 小変更値、大変更値ともに依存関係プロパティで、名前はそれぞれMySma…

WPFにもNumericUpDownみたいなのをユーザーコントロールで、その3

昨日の続き ユーザーコントロールの依存関係プロパティとのBinding decimal型の依存関係プロパティ(名前:MyValue)を追加 RepeatButtonクリックでMyValueに+1、-1 を追加した github.com UserControl1.xaml.cs クラスの名前をUserControlからNumericUpDownに…

WPFにもNumericUpDownみたいなのをユーザーコントロールで、その2

昨日の続き 数字だけ入力 入力制限は一昨日のをコピペして、あとはクリックしたときに文字列全部を選択するのを追加した github.com UserControl1.xaml

WPFにもNumericUpDownみたいなのをユーザーコントロールで、その1

目的は こういうNumericUpDownみたいなの Visual Studio Community 2019、.NET Core、C#、WPFで作ってみる わざわざ作らなくても、探せばあるんだろうけど作りたいから作る 今回の記事では、見た目だけ作るまでの手順 ここまで 新しいプロジェクトの作成 選…

WPFで数字とハイフンとピリオドだけ入力できるテキストボックス、-0.0に意味はある?

数字入力用テキストボックス 入力できるのは0から9までの数字とハイフン"-"とピリオド"." ハイフンが入力できる場所は先頭だけ github.com MainWindow.xaml

いろいろな局所範囲しきい値で画像の2値化を試してみた

局所範囲(注目ピクセルの近傍ピクセル)からしきい値を計算して2値化、この前は平均値をしきい値にしたものだった。今回はそれ以外の計算方法をググって、いくつか試してみた 使ったアプリは 20200422_局所しきい値で2値化.zip github.com 画像ファイルドロッ…

ガンマ補正してから黒灰白の3色に減色+ディザリングしてみた、グレースケール画像

前回の続きで、今回は3色に減色、3色は0, 127, 255 ディザリングはいつもの誤差拡散FloydSteinberg方式 github.com 今回のアプリ ダウンロード:20200507_ガンマ補正してから3色誤差拡散.zip 今回のアプリ 画像ファイルドロップで画像表示、カラー画像もPixe…

ガンマ補正してから画像の2値化ディザリングしてみた

2値化ディザリングするときにガンマ補正をしないと、元の画像より明るい画像になる 輝度値がそれぞれ 0(黒) 255(白) の2値を使って、その中間になる128(灰色)の画像をディザリング処理すると 128(灰色) 2値化ディザリング 元の画像よりかなり明るく見える、…

局所的平均値をしきい値として2値化、局所範囲ピクセルの合計は差分計算で高速化

2値化するときに使うしきい値の計算を、注目ピクセルの周囲のピクセルの値を使ってする 範囲は1指定なら3x3ピクセル、2なら5x5、3なら7x7とするようにして 計算は平均値にしてみた 範囲1で注目ピクセルの座標が(1,1)のとき 3x3ピクセルの平均値は162.2 = (14…

減色テスト、グレースケール版その4、誤差拡散すると誤差蓄積されすぎて色が流れたようになる問題

誤差拡散法 誤差蓄積 誤差拡散法を使って減色できるようにした、方式はフロイドスタインバーグ 20200327_減色テストグレースケールvar.1.3.zip github.com 誤差蓄積されすぎ問題 この画像を2色に減色する、減色用のパレットを作成 2色は161と97が選ばれた、…

減色テスト、グレースケール版その3、Kittlerの方法でCube分割を追加した

github.com 20200327_減色テストグレースケールver.1.2.zip パレットの色を昇順ソートできるようにした Cube分割方法にKittlerの方法を追加した チェックを入れたパレットはパレットリストクリアしても残すようにした Kittlerの方法 大津の方法と比べてみる …

Kittlerの方法でしきい値を求めるのを、エクセル2007とC#WPFで書いてみた

ヒストグラムを2分する時のしきい値はどこが最適なのかを求める この場合なら左右対称なので真ん中 しきい値を4にして0~3と4~7に2分すれば丁度いい それぞれの範囲の値から平均値と分散を計算して、それを使って正規分布をグラフにすると こんな感じのがで…