ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4396329
Jetzt (Chat):
20 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
Sourcecode-Probleme
C# Frage an die Kenner
Normal
AutorThema
Sergius Offline
ZFX'ler


Registriert seit:
10.03.2002

Deutschland
67172111
C# Frage an die KennerNach oben.
Hi,

muss gerade was mit dem C# machen, deswegen eine Frage an euch.

Wie kann man in einem ListeView-Element Bilder anzeigen lassen und zwar:

- die Bilder (ca. 200x40 Pixel groß) müssen Realtime temporär im RAM aus TextStrings erstellt werden (nach beendem vom Programm brauche ich die Bilder nicht mehr)

- Neben den Bilder müssen in jedem ListView eintrag rechts noch 2 kleine Buttons untereinander dargestellt werden

Meine Fragen sind jetzt:
- wie erstelle ich diese Bilder temporär aus TextStrings
- wie realisiere ich so ein ListView-Element

Danke Vorraus,
Sergius
02.12.2008, 18:29:49 Uhr
odenter Offline
ZFX'ler


Registriert seit:
13.12.2002

Bremen
Re: C# Frage an die KennerNach oben.
Also die Objekte zu Laufzeit zu erzeugen dürfte nicht das Problem sein, die Klassen Image und oder Bitmap dürften hier Dein Freund sein.

Was das ListView angeht habe ich nicht so ganz verstanden was Du machen willst. Grundsätzlich kannst Du einem Eintrag ein Image (Typ Image/Bitmap) zuordnen.
Möglicherweise musst Du dir ein eigenens Control erstellen, das dann eine Picturebox und die entsprechendenen Buttons darstellt.
02.12.2008, 19:35:24 Uhr
Sergius Offline
ZFX'ler


Registriert seit:
10.03.2002

Deutschland
67172111
Re: C# Frage an die KennerNach oben.
Zitat von odenter:
Also die Objekte zu Laufzeit zu erzeugen dürfte nicht das Problem sein, die Klassen Image und oder Bitmap dürften hier Dein Freund sein.

Was das ListView angeht habe ich nicht so ganz verstanden was Du machen willst. Grundsätzlich kannst Du einem Eintrag ein Image (Typ Image/Bitmap) zuordnen.
Möglicherweise musst Du dir ein eigenens Control erstellen, das dann eine Picturebox und die entsprechendenen Buttons darstellt.


Ja, ich denke ich muss mir dann eigenes Control dafür erstellen, was die ListView aufnehmen kann.

Aber, wie kann ich so ein Control erstellen und wie binde ich so ein Control dann als einträge in ListView ein ?
02.12.2008, 21:22:36 Uhr
odenter Offline
ZFX'ler


Registriert seit:
13.12.2002

Bremen
Re: C# Frage an die KennerNach oben.
Ich meinte nicht ein eigenes Control erstellen und ins ListView einfügen, sondern ein eigenes Conrol erzeugen und benutzen.

Alternativ kannste ja auch ne neue Klasse erstellen die von ListView erbt und dann die OnPaint Methode überschreiben, dazu hätt ich allerdings keine Lust.
03.12.2008, 08:53:04 Uhr
NeoInferno Offline
ZFX'ler


Registriert seit:
10.09.2002

Deutschland
Re: C# Frage an die KennerNach oben.
Falls du die freie Wahl hast, würde ich dir zur Windows Presentation Foundation raten, (hauptsächlich) ein GUI-Framework, das ab .NET 3.0 die vorhandene Version 2 erweitert.

Läuft auf jedem Visual Studio ab 2005 und du kannst mit C# programmieren.

1. Bild aus string laden:
In der WPF kannst du als Quelle eines Bildes auch einen Stream übergeben, also in deinem Fall z.B. einen MemoryStream, der den string enthält.

Edit: Hier noch ein Codebeispiel dazu:
Code:
byte[] b = System.Text.Encoding.ASCII.GetBytes(\"Text\");
MemoryStream ms = new MemoryStream(b);

BitmapImage source = new BitmapImage();
source.StreamSource = ms;

Image img = new Image();
img.Source = source;


2. Zwei Buttons neben den Bilder. Das geht in WPF ohne weiteres, da du jedes beliebige Control mit jedem kombinieren kannst:

Code:





Fertig

In der WPF kann man Oberflächen in dieser XML-artigen Sprache beschreiben - natürlich wie in WinForms auch mit Designerunterstützung, man kann sie sogar im Code per C# definieren.

Ich hoffe mein Enthusiasmus lässt das hier nicht zu einer Werbesendung über ein gewisses Framework verkommen

Falls du ernsthaft WPF in Erwägung ziehst helfe ich dir gerne weiter.

4 Mal gendert, zuletzt am 03.12.2008, 21:47:42 Uhr von NeoInferno.
03.12.2008, 21:38:32 Uhr
Neochat
Sergius Offline
ZFX'ler


Registriert seit:
10.03.2002

Deutschland
67172111
Re: C# Frage an die KennerNach oben.
Hi NeoInferno,

erstmal danke für dein Enthusiasmus

Programm soll an jedem Windows XP/Vista laufen,
da es für einen "Kunden" ist.

Wie schaut es denn mit WPF (bzw mit .NET 3.0) aus ?
Ist das standardmässig schon überall dabei ?

Da wir alle hier im Forum "Entwickler" sind, haben wir alle sicherlich schon .NET 3.0 auf dem Recher aus welchen Gründen auch immer.

Aber wenn diese WPF/.Net 3.0 ohne Nachinstallationen (Serverpackupdates) oder ähnliches auf jedem Standard-Anwender-PC mit Windows XP/Vista drauf ist, würde ich natürlich das verwenden.
04.12.2008, 15:37:08 Uhr
NeoInferno Offline
ZFX'ler


Registriert seit:
10.09.2002

Deutschland
Re: C# Frage an die KennerNach oben.
Hi,

.NET 3.0 bzw. 3.5 SP1 (aktuellste Version) läuft auf WinXP und Vista, muss aber (falls es nicht bei den automatischen Updates dabei ist) manuell auf dem Rechner installiert werden.

Da du für dein Programm aber wahrscheinlich eh ein Setup hast, könntest du das .NET Setup einfach dazupacken.

Ich arbeite seit knapp 2 Jahren damit und bin sehr begeistert. Außerdem beherrschst du wenn du WPF kannst auch (fast) automatisch Silverlight (Flash Konkurrent von Microsoft), weil der Aufbau der Frameworks größtenteils identisch ist.

Im Visual Studio 2008 Express, das es kostenlos zum Herunterladen gibt, ist WPF vorinstalliert, d.h. du könntest dir ein paar Samples/Tutorials runterladen und mal reinschnuppern.
04.12.2008, 18:05:53 Uhr
Neochat
Ysas Offline
ZFX'ler


Registriert seit:
11.05.2004

Österreich
49098843
Re: C# Frage an die KennerNach oben.
Dieser Code müsste ab .NET 2.0 lauffähig sein:
Listview Name in diesem Sample: lvImages
Code:
string[] images = Directory.GetFiles(@\"C:\tmp\Pictures\", \"*.jpg\");
            ImageList ilImages = new ImageList();
            
            lvImages.View = View.SmallIcon; //<-- Hier kannst bisschen herumspielen :)
            foreach (string s in images)
                ilImages.Images.Add(Image.FromFile(s));
            lvImages.SmallImageList = ilImages;
            lvImages.LargeImageList = ilImages;

            for (int iz = 0; iz < images.Length; iz++)
            {

                ListViewItem listItem = new ListViewItem();
                string sArg = \"\";
                listItem.Text = \"\"; 

                listItem.ImageIndex = iz;
                lvImages.Items.Add(listItem);
            }
13.01.2009, 11:06:31 Uhr
Normal


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel