Anzeigen von Miniatursymbolen mit einer Größe von 128 x 128 Pixel oder größer in einem Raster in ListView

Anzeigen von Miniatursymbolen mit einer Größe von 128 x 128 Pixel oder größer in einem Raster in ListView

Zur Aktualisierung:

  1. Farbtiefe der Bildliste zusätzlich zur Bildgröße festlegen (ilist.ColorDepth =ColorDepth.Depth24Bit)
  2. WinForms ListView hat keine Möglichkeit, den Symbolabstand zu ändern, dies kann jedoch einfach mit Win32 durchgeführt werden. Sie müssen LVM_SETICONSPACING an Ihre ListView senden (es gibt viele Tutorials zur Verwendung der Win32-Funktion SendMessage in .net, also denke ich, dass diese Richtung für Sie ausreichen muss).

Sie könnten das FlowLayoutPanel verwenden und Bildfelder darin ablegen. Stellen Sie die Picturebox auf eine Größe von 128x128 und den Sizemode auf 'Zoom' (Dies sorgt dafür, dass die Größe Ihres Bildes ohne Verlust des Seitenverhältnisses geändert wird). Sie können die Pictureboxen sogar programmgesteuert hinzufügen.

PictureBox pb = New Picturebox;
 pb.image = gcf.image128;
 FlowLayoutPanel1.Controls.Add(pb)

Da Sie ein Label unter der Picturebox haben müssen, könnten Sie ein Usercontrol erstellen, wie Pastor sagte, dass alles, was es hat, eine Picturebox und ein Label darunter ist. Dann wäre das die Steuerungsinstanz, die Sie Ihrem Flowlayoutpanel hinzufügen würden.


ObjectListView (ein Open-Source-Wrapper um eine .NET-Listenansicht) erleichtert das benutzerdefinierte Zeichnen einer Kachelansicht. Sehen Sie sich die komplexe Ansicht in der Demo an, wechseln Sie zur Kachelansicht, wenn benutzerdefiniertes Zeichnen aktiviert ist:
(Quelle:sourceforge.net)

Wenn Sie nur ein 128x128-Bild plus einige Textdetails möchten, müssen Sie es nicht einmal zeichnen. Sie könnten ihm eine große Bildliste geben und dann mit IsTileViewColumn markieren, welche Bits von Textinformationen Sie auf der Kachel anzeigen möchten.