新しい画像でPADを起動すると、以前に比べて輪郭のギザギザ(ジャギ)が気になる。元の絵はアルファ情報付きのPNG形式だけど、どうやら輪郭の透過具合が働いていないっぽい。
今はフォームのTransparencyKeyをフォームの背景色にすることでキャラクターを表示しているが、これではダメらしい。調べると、WindowsAPIのUpdateLayeredWindowを使えばPNGのアルファ情報そのままに表示できるらしい。
しかし、C#でのサンプルコードが見つからず苦戦しました…。まだ作りかけのコードですが、一応綺麗に表示できるようになりました。
左が改良版で、右が今までのバージョン。右は輪郭が白っぽくなっていますが、左は綺麗に表示されています。WindowsAPIを使っているので、Windows専用の機能となってしまうけど仕方ない。そもそも、Linuxで実行すると透過処理自体がうまくいかないから、結局Windows以外のOSはサポートできそうもないですし…。
できればMono上で動かしたかったなぁ。Monoを諦めるなら、WPFを視野に入れる時期かも?未だにWindowsAPIの呪縛に縛られるのは正直嫌なのです。
0 件のコメント:
コメントを投稿