Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

背景画像に対して透過効果を出来るようにして欲しいです #665

Closed
m-tmatma opened this issue Dec 1, 2018 · 5 comments
Labels
enhancement ■機能追加

Comments

@m-tmatma
Copy link
Member

m-tmatma commented Dec 1, 2018

@arigayas

#659 (comment)

別のissueとして登録した方が良いと思いますが
背景画像に対して透過効果を出来るようにして欲しいです。

@beru

#659 (comment)

自分もそれは思った事があります。あとターミナルエミュレータとかでよくありますが背景を透過させて後ろのウィンドウの内容が透けて見えたりとか、実用性は微妙な気がしますが出来ても良いと思います。

@beru
Copy link
Contributor

beru commented Dec 7, 2018

背景画像の透過ですが簡単に実現出来そうなことが分かりました。

BLENDFUNCTION::SourceConstantAlpha の値で画像の透過度を調節出来るようです。
0 の時に透明で 255 で不透明。

もし #683 が merge されたら、別のPRで設定画面の変更も含めて対応しようと思います。

なお、エディト領域のウィンドウ自体が透過して後ろのウィンドウの内容が透けて見えるようにするには、WS_EX_LAYERED を指定してから UpdateLayeredWindow を使えば出来るようです。しかし WM_PAINT に頼れなくなるようなのでそうすると結構大きな改造が必要そうでしんどい気がします。。

@berryzplus
Copy link
Contributor

参考情報を追記しときます。

サクラエディタのウインドウ構造はこうなっています。
・CEditWnd ・・・ タイトルバーを表示する、ルートのフレームウインドウ
 ┗CSplitterWnd ・・・ ウインドウ分割を実現するウインドウ
  ┗CEditView ・・・ ビュー、エディタ部分のウインドウ、表示してなくても5つのインスタンス

透過実装を行う場合、少なくともこの3つのウインドウクラスに対して変更が必要です。
レイヤーという言い方だと3層構造になので各層を透過させないといかんです。

現状の WM_PAINT は更新領域の情報を部分的にしか使っていないので、
そのあたりを改修する必要があると思われます。

  • 更新矩形 ・・・ 更新対象のRECT(矩形)、既存コードで既に部分的に考慮されている
  • 更新領域 ・・・ 更新対象のREGION(矩形とは限らない)

@beru
Copy link
Contributor

beru commented Dec 8, 2018

あらら、、透過ウィンドウの実現は厳しそうですね。

@beru
Copy link
Contributor

beru commented Dec 10, 2018

背景画像に限らないウィンドウ自体の透過表示については別Issue #691 で扱う事にしましょう。

@beru
Copy link
Contributor

beru commented Dec 14, 2018

#704 を merge したので close します。

@beru beru closed this as completed Dec 14, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement ■機能追加
Projects
None yet
Development

No branches or pull requests

3 participants