SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

任意のウィンドウをアクリル化するツールを作ろうとして挫折

ちょっと思い付きで、Windows10向けに任意のWindowをアクリル化するツールを作ろうとしてました。

こんな感じ。
f:id:minami_SC:20180323000452g:plain

Spy++とかのツールみたいに、対象ウィンドウへとドロップ操作を行うと、そのウィンドウをアクリル化します。
ウィンドウハンドルを取得して、そのウィンドウに対してSetWindowCompositionAttribute関数呼べば、イイ感じにできないかな、、、と思い試してみました。

続きを読む

VirtualShortcutKey 1.1.0リリース

VirtualShortcutKey 1.1.0をリリースしました。 github.com ダウンロードページ

今回の更新は、Win7/8.xへの対応が主な変更点です。

変更内容

  • Windows 7/8.x系OSへの対応
    以前のバージョンでは、Windows7/8.x系OSでUI表示が乱れる不具合がありましたが、この表示の乱れを修正しています。

  • ウィンドウのアクリル効果の微修正
    わずかにですがFluentDesignのアクリル風エフェクト効果を修正しました。
    半透明のアクリル効果を加えたウィンドウでは、ウィンドウに若干のノイズを加えてざらつき感をだしています。
    今回のバージョンでは、このノイズをほんっっの少しだけ弱めて、滑らかな表示にしました。

1.0.0 1.1.0
f:id:minami_SC:20180228012224p:plain f:id:minami_SC:20180228012234p:plain

FluentWPF 0.2.2をリリースしました

2件ほどプルリクをいただいたので、マージしてFluentWPF0.2.2としてリリースしました。

Release v0.2.2 · sourcechord/FluentWPF · GitHub

Nugetからは以下のコマンドでインストールできます。

Install-Package FluentWPF

https://www.nuget.org/packages/FluentWPF/

変更内容

今回の変更内容は以下の2点です。
(どちらもプルリクでいただいた内容です。)

  • AcrylicWindow.ShowTitleBar="False"のときに、タイトルバー部分の余白ができる
  • ウィンドウ作成後に、AcrylicWindow.Enabled添付プロパティをTrueにしても、ウィンドウがアクリル化されない不具合を修正

AcrylicWindow.ShowTitleBar="False"としたときに、以下のようにタイトルバーがあった部分に無駄な余白ができてしまっていました。
f:id:minami_SC:20180221231918p:plain

<fw:AcrylicWindow x:Class="FluentWPFSample.Views.AcrylicWindow"
                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                  xmlns:fw="clr-namespace:SourceChord.FluentWPF;assembly=FluentWPF"
                  xmlns:local="clr-namespace:FluentWPFSample.Views"
                  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                  Title="AcrylicWindow"
                  Width="300"
                  Height="300"
                  ShowTitleBar="False"
                  mc:Ignorable="d">
    <Grid Background="#70FFFFFF">
        <TextBlock Margin="10"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Top"
                   Text="この部分がコンテンツ領域"
                   TextWrapping="Wrap" />
    </Grid>
</fw:AcrylicWindow>

今回のバージョンアップで、こんな風にちゃんとウィンドウ全域が描画領域になります。
f:id:minami_SC:20180221231929p:plain

今後の予定

現在、OSのアクセントカラーやLight/Darkのテーマ設定を反映できるように対応を進めています。
f:id:minami_SC:20180221233148g:plain

この辺、ある程度動作するコードは書けてるんだけど、クラス名とかXAMLからのプロパティ定義をどんな仕様にするか、まだ少し悩んでいます。

もう少し時間がかかりそうですが、こんな対応を進めてこうと思ってます。
とりあえず、今月中にはテーマ対応をして次バージョンをリリースしたいなぁ。

Electron+TypeScriptなプロジェクトの雛形を更新~Electron1.8.2+TypeScript2.7.1~

以前作ったElectron+TypeScriptのサンプルコードを、それぞれの最新バージョンにアップデートしました。

それぞれ、以下のバージョンに更新してます。

  • electron v1.8.2
  • typescript v2.7.1

こういう雛形って、定期的に新しいバージョンに追従しておかないと、変更内容を追いきれなくなりますからね。

今回はコードには変更を加えず、ライブラリ類のバージョン更新だけでOKでした。
今後も、定期的にライブラリの更新に追従しておこうと思います。

VirtualShortcutKeyが窓の杜で紹介されました

以前作った、↓のツールが窓の杜で紹介されました。
Ctr+C/Ctrl+Vなどのショートカットを、マウス/タッチパネル操作で実行するツールを作ってみました - SourceChord

思い付きで一気に作ったツールだったので、まさかこんな形で紹介されるとは予想もしてなくてビックリです(汗

自分が普段見に行ったりするようなサイトで紹介されるって、、ちょっと感慨深いですね。

FluentWPF 0.2.1をリリースしました

以前作成した↓のライブラリを更新しました。

github.com

Nugetからは以下のコマンドでインストールできます。

Install-Package FluentWPF

https://www.nuget.org/packages/FluentWPF/

続きを読む

FluentWPF v0.2.0~AcrylicPanel/DropShadowPanelの追加~

先日、↓のFluent Design SystemをWPFで再現するライブラリを作りましたが、ちょこっとバージョンアップしてみました。

sourcechord.hatenablog.com

f:id:minami_SC:20180110081212p:plain

主に以下のような変更を行いました。

  • 新規コントロールの追加
    • AcrylicPanel・・・・・・背景ぼかし処理をするパネル
    • DropShadowPanel・・・影の表示方法に少し手を入れたDropShadowEffect付きパネル
  • バグフィックス
    • AcrylicBrushのバグフィックス
      AcrylicBrush使用時に、LayoutChangedイベントが発生し続けて、CPU負荷が高くなる不具合を修正
    • AcrylicWindowのWin10環境以外への対応
      Win10以外の環境では、AcrylicWindowの背景ぼかし処理を無効化しました。

Acrylicなぼかしウィンドウの作成には、SetWindowCompositionAttributeという非公開API使っているので、以前のOSへの対応はやっぱ仕組み的に難しいですね。。。
ということで、Win10以外のOSでは、AcrylicWindowのぼかし処理を無効化しました。
(Win7ならAeroGrass効果をうまく使えば、それっぽい表示を真似できるかもしれませんが。。)

続きを読む