2009年6月21日日曜日

透過フォームを綺麗に表示

新しい画像でPADを起動すると、以前に比べて輪郭のギザギザ(ジャギ)が気になる。元の絵はアルファ情報付きのPNG形式だけど、どうやら輪郭の透過具合が働いていないっぽい。

今はフォームのTransparencyKeyをフォームの背景色にすることでキャラクターを表示しているが、これではダメらしい。調べると、WindowsAPIのUpdateLayeredWindowを使えばPNGのアルファ情報そのままに表示できるらしい。

しかし、C#でのサンプルコードが見つからず苦戦しました…。まだ作りかけのコードですが、一応綺麗に表示できるようになりました。


左が改良版で、右が今までのバージョン。右は輪郭が白っぽくなっていますが、左は綺麗に表示されています。WindowsAPIを使っているので、Windows専用の機能となってしまうけど仕方ない。そもそも、Linuxで実行すると透過処理自体がうまくいかないから、結局Windows以外のOSはサポートできそうもないですし…。

できればMono上で動かしたかったなぁ。Monoを諦めるなら、WPFを視野に入れる時期かも?未だにWindowsAPIの呪縛に縛られるのは正直嫌なのです。

0 件のコメント:

コメントを投稿