2013年10月4日金曜日

日記ちゃん


 いろいろ思うところがあって改良を続けたらこうなった。
好きなフォントをチョイスできたり、不要な部分を透明にしたり。
 それはそれとして
レイヤードウィンドウを完全に透明にするにはARGBのAだけ0にすればいいかと思ってたんだけど
実際にはうまくいかず微妙に半透明になる。
ARGB==0だと完全に透明になるようなので、必要な時には元の色を捨てて0にしてしまうのがいいかも。
 というかなんか透過率の計算変じゃね? 
白(255,255,255)を半透明にしようとしてもならないが、黒(0,0,0)だと正常に半透明になるんだけど。
 
 UpdateLayeredWindow not respecting alpha channel with certain colored pixels
 ググったらいくつか出てきた。
NewColor = ClampTo255( Round(DestColor*(1-Alpha/255)+SrcColor))
と計算式になっているので、描画する色が255だと下の色や半透明率が何色であろうと
NewColor = ClampTo255( Round(255) )
となり255となってしまうのだそうだ。
 本来の半透明合成の計算式は、
NewColor = DestColor*(1-Alpha/255) + SrcColor*Alpha/255;
だったかな。なので、
あらかじめ SrcColor を SrcColor*Alpha/255 としていおくとうまくいくようだ。

2 件のコメント:

森一郎 さんのコメント...

フリック入力にもfunktionキーが欲しい
トラックボールでは横移動より斜め移動がしやすいので、斜めフリックを使いたい
英字フリックをスマホと同様の配列にしてほしい

su さんのコメント...

コメントありがとうございます。
>フリック入力にもfunktionキー
主にF6~F10キーでしょうか
>英字フリックをスマホと同様の配列に
特に目からウロコでした。
少し調べたところいくつか種類があるようなので、
使いやすそうなのをチョイスして早急に実装したいと思います。
ありがとうございました。