2011-02-10 14 views
2

私はモバイルアプリケーション用のUIフレームワークを構築しており、UIグラフィックスの管理に関する質問があります。C#より良いUIグラフィックスの管理

今はすべてのグラフィックを埋め込みリソースとして保存しています。しかし、プロジェクトのGUI部分は3つの異なるProjectsとNameSpaceに分離されており、それぞれがグラフィックを組み込みリソースとして含んでいます。プロジェクトの1つは基本型であり、他の2つのプロジェクトはネームスペースとアセンブリからのリソースと第3(基本)名前空間とアセンブリからのリソースを必要とします。

私がやっていることはリソースがファイル名で要求されると、3つのプロジェクトのAssemblyオブジェクトのGetManifestResourceNamesのリストを順番に並べ替えて並べ替え、ファイル名を含む最初の文字列を検索します。私は各文字列のためにこの文字列を取得するのに11-14ミリ秒かかると気づいています!すべてが言われて完了したら、私はリソース名の検索だけで60-100ミリ秒を見ています

ファイル名だけを使ってプロジェクトとネームスペース間でリソースを動的に見つける良い方法があるはずです。これについての助けがあれば素晴らしいでしょう!

また、リソースを埋め込むことは制約ではありません。 ERを伴わない優れたソリューションがあれば、それは素晴らしいことでしょう!

答えて

1

60-100msは一回限りの操作として悪くないので、アプリ実行中に早めにこれを取得する独自のキャッシュクラスを作成できます。Dictionaryオブジェクトを使用すると非常に高速になりますその時点からのルックアップ時間。

リストをあらかじめ用意していない場合は、「遅延読み込み」キャッシュに戻すことができます。つまり、値は最初に要求された時点で検索され、その後のアクセスのために保存されます。

希望に役立ちます。

+0

ありがとうございました!だから、どのように辞書を設定することをお勧めしますか?イメージ名とアセンブリのキーは値ですか? IDKの大きさAssemblyオブジェクトは小さければ(静的オブジェクトへのポインタ)、それは大丈夫ですが、巨大な場合は、それが.netCFであるために32 MBしかありません。 –

+0

しようとしていますファイル名に基づいてオブジェクトを取得またはキャッシュしますか? 'Dictionary 'はそれを行います:辞書を見るだけで、あなたのオブジェクトはマイクロ秒単位になります:) –

+0

ありがとうございます。私が尋ねるのは、Dictionary のようにDictionaryを設定し、Assemblyオブジェクトがポインタだけだった場合、またはそれが非常に大きなオブジェクトだった場合です。これは、ヒープのサイズが非常に限られているためです。そのため、私は実際のImageオブジェクトをキャッシュしていません。 –

関連する問題