0

.NET3.5に基づくwinformsアプリのListViewでの画像のレンダリングに問題があります。

ListViewコントロールでは、LargeImageListをサムネイルとして使用します。

アプリはWin7で正しく動作します-サムネイルの画像は問題ありませんが、アプリがWin XPで実行されている場合、サムネイルの画像は正しくレンダリングされません。

Win7とWinXpでのレンダリングの違いはこれにあり画像ます。

この動作の原因は何ですか?

編集:応答とアドバイスをありがとうございました。それは解決されました。WinFormsリストビューではなく別のコントロールを使用します。

4

2 に答える 2

0

BetterListViewコンポーネントをチェックアウトできます。任意のサイズのサムネイルを有効にするために多大な努力を払いました。

ここに画像の説明を入力してください

レンダリングはGDI+を使用するため、結果はXPとWindows 7で同じように見えます(もちろん、Windowsテーマに基づく選択を除いて)。

.NET ListViewはWin32コントロールラッパーであるため、外観はオペレーティングシステムに大きく依存します。これらの問題を回避するために、コントロールをマネージコードで完全に記述しました。

于 2012-08-04T00:39:36.380 に答える
0

この目的のために、無料のObjectListViewコントロールを使用してみることができます。http://objectlistview.sourceforge.netからダウンロードできます。

基本的な実装

  1. 通常のListViewコントロールをObjectListViewに置き換えます。
  2. ObjectListViewに表示するフィールドを含むクラスを作成します。これが必要なのは、OLVがListViewItemを直接使用して要素を表示
    しないためです。
  3. OLVに(コードで)列を作成し、列に表示されるプロパティ(ステップ2から)を指定します。
  4. ImageGetter画像を表示する列(通常は最初の列)のプロパティを、を返す関数Imagestringまたはintアイテムに表示する画像に対応する関数に設定します。
    関数がまたはを返す場合stringintOLVのLargeImageListまたはの画像SmallImageListがアイテムに表示されます。
  5. Enumerable表示するアイテムのコレクションを作成し、 SetObjectsorAddObjectsメソッドを使用してOLVに添付します。
  6. アイテムに表示される画像を返す関数で、GDI(または任意の方法)で画像をレンダリングし、OLVに表示するために返します。
于 2012-08-04T08:49:46.397 に答える