【ゲーム制作日記008】技術的問題たち(無知

4月3日、一日空けてからの、日付変わっての日記です。ねむい。

いろいろとうーん、って思ってた事たちが解決風味に向かってるのと、
これは気を付けないと…みたいなものがでてきてます。


記事タイトルはかっこよく書いてみたけど無知なだけですのん( ˘ω˘ )スヤァ…

文字列のxamlを読み込んでオブジェクトを生成できない問題

名前空間の指定がまずかった模様。XAML の知識全然ないのーーん
ちゃんと設定すれば UserControl とかでも生成できまする


画像背景色が透明じゃなかった問題

写真屋さんで出力したデータをペイントで拡大して保存、なんてことをしてたんだけど、
ペイント通すと透明度情報が消えるんですね…っていう理由でしたん。

あと、写真屋さんでもイメージ>画像解像度で補間方法を指定して拡大できるみたい。
冷静に考えてできないわけないもんね…うん。


BitmapImage のメモリリーク

Imageコントロールにコードから BitmapImage 読み込んで設定する際にメモリリークが発生するらしいです。おうふ。
どうやら BitmapImage はデフォルトではキャッシュされたり、EventHander みたいに強い参照になったりとかが原因みたい。詳しくはみてないし検証もしてないんだけどもさ。


んでもて、こんな感じで読みだせばいいらしいね

private BitmapImage LoadBitmapImage( string path, UriKind urlKind )
{
    BitmapImage image = new BitmapImage();

    image.BeginInit();
    image.CacheOption = BitmapCacheOption.None;
    image.UriSource = new Uri( path, urlKind );
    image.EndInit();
    image.Freeze();

    return image;
}

Freezeすればいいって話だけど、この場合は念のためキャッシュをオフ。

あ、今回のプログラムは、管理がめどいのでこのキャッシュ機能はそのまま使ってみようと思います。
一応もしもの時のために差し替えられるようにはしとくけどね。


画像拡大時の補間

ドット絵なんかを拡大する場合など、画像をぼやけさせたくない、そんなとき。
こんな感じまほうのことばでレンダリングの設定ができるみたい。

BitmapImage image = new BitmapImage( new Uri( "おこたさん_あほ毛1.png" ) );
RenderOptions.SetBitmapScalingMode( image, BitmapScalingMode.NearestNeighbor );

が、ちょっと試してみたところ動いてない現状。ねむいしまた明日やりまふ( ˘ω˘ )