午後わてんのブログ

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

#ソフトウェア

関連ウィンドウもまとめてスクショできるようにしたPixcren、キャプチャ範囲はこれで完成

Pixcren1.2.4 ダウンロード先 作成動作環境 規定ファイル名を変更した 関連ウィンドウをまとめてスクショできるようにした ウィンドウ特殊1+でスクショしてみる ウィンドウ枠外に伸びたリストウィンドウとか 別のキャプチャ範囲でスクショ 関連ウィンドウの…

スクショした画像確認用のウィンドウを追加してみたPixcren

バージョン1.2.3 ダウンロード先 更新内容 アプリのアイコン設定した キャプチャした画像を確認する用の、プレビューウィンドウ追加した プレビューウィンドウでできること 画像をクリップボードにコピー 表示方法の切り替え ウィンドウサイズに合わせる 実…

ウィンドウのタイトルバー情報を取得するWinAPIのGetTitleBarInfoを使ってみた、WPF、C#

ウィンドウのタイトルバー情報を取得 TITLEBARINFO構造 TitleStateのそれぞれの値の指定 テストアプリのコード API.cs MainWindow.xaml MainWindow.xaml.cs ウィンドウのタイトルバー情報取得してみる ここまでの結果を一覧表にすると ウィンドウのタイトル…

WPFのBitmapSourceVisualizer、アルファ値を保持して画像のコピーできるようにした

改善点 結果 ダウンロード先 インストール方法 Visual Studio 2019で.NET Coreや.NET 5の場合は .NET Coreより古い.NET Frameworkとかだと少し違うみたいで 概ね期待通りに動くけど 改善点 表示した画像をクリップボードにコピーするときに、アルファ値を正…

ウィンドウ枠外のメニューも含めてスクショで、エクセル系アプリにも対応したPixcren

ダウンロード先 アプリ動作条件 使い方は過去の記事より 変更点 ウィンドウ枠外に伸びたメニューウィンドウもキャプチャを改善 クリップボードにコピーを改善 ウィンドウ外のポップアップウィンドウのスクショ できたらいいな ダウンロード先 github.com こ…

アルファ値を失わずに画像のコピペできた、.NET WPFのClipboard

半透明画像のコピペ結果 Clipboardクラスにはクリップボードに画像をコピーするSetImageと、クリップボードから画像を取得するGetImageがあるけど、これを使うとピクセルのアルファ値が255(完全不透明)か、0(完全透明)に変換されてしまう テストに使った画像…

アプリのスクショでウィンドウ枠外のメニューもキャプチャしたい

目的 使うWinAPI関数 大まかな流れ GetForegroundWindowの結果はアプリによって違う エクセル系、普通のアプリ系の判定 エクセル系だった場合NEXTで下層ウィンドウ収集、Rectリスト作成 要るものだけ残して、そのRect収集 追加Rect 普通のアプリ系だった場合…

エクセルのスクショ時にウィンドウ枠外のメニュー、右クリックメニューも同時に撮りたい、WPFとWinAPI

目的 基本的な処理の流れは 普通のアプリとエクセルとかのリボンメニューがあるアプリの違い 基点ウィンドウから関連ウィンドウを辿る GetParentで辿っていく方法もあるけど 右クリックメニューはGetParentで辿れない 下層のウィンドウを取得するNEXTで辿る …

ウィンドウ枠外のメニューもスクショできるアプリ、Pixcren

New! キャプチャ範囲に昨日の gogowaten.hatenablog.com を gogowaten.hatenablog.com に追加した ダウンロード先 github.com Pixcren1.2.1.7z これでスクショすると メモ帳のメニューウィンドウ いいね! これができるスクショアプリがないから、自分で作…

アプリのウィンドウキャプチャで、枠外のメニューウィンドウもキャプチャ

メモ帳のウィンドウ枠外にメニューウィンドウが広がっている状態 デスクトップ この状態でスクショした結果 スクショ画像 目的のアプリのウィンドウ以外は取り去って、この画像を得るのが目的で、こうするには Rect こういう赤枠のようなRectを取得して切り…

WPF、他のアプリの右クリックメニューのウィンドウハンドル取得方法がわからん

目的は右クリックメニューのRectか画像としての取得で、ウィンドウハンドルさえ取得できればいいんだけどねえ、少し試したけどわからんかったって話 結果から言うと、できることはできたけど、マウスカーソルが右クリックメニューの上にあるっていう条件付き…

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 .…

GitHubのTagとRelease機能を使ってみた

目的はこの前回に作ったUserControlのDLLファイルの公開 こうなった、ファイルは矢印の先にあるControlLibraryCore20200620.7z アドレスをコピペしてみると https://github.com/gogowaten/userControl/releases/download/v1.0.1/ControlLibraryCore20200620.…

いろいろな局所範囲しきい値で画像の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の方法 大津の方法と比べてみる …