Announcement

Collapse
No announcement yet.

Bilder zur Laufzeit einbinden?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bilder zur Laufzeit einbinden?

    Hallo allerseits,

    bin noch recht neu hier im Forum habe mich aber schon etwas mit C# befasst,
    stehe nun allerdings vor einem "nice to have" Problem.
    Folgende Problemstellung ich lasse anhand gewisser Benutzerangaben den kürzesten Weg berechnen, dieser wird im Anschluss in einer multiline Textbox ausgegeben.
    Die Frage ist nun wäre es möglich in jeder Textboxzeile ein Bild mit einem Pfeil einzubinden, zusätzlich zum Text. Je nachdem in welche Richtung man sich bewegen soll. Habe dazu leider keine vernünftige Idee.
    Muss auf jeden Fall dynamisch sein da ich vorher nicht bestimmen kann wie viele Wegpunkte der Benutzer eingeben wird, also einfach massig picture Boxen ins Textfeld packen und hoffen das die Anzahl ausreicht würd ich nicht als Lösung in betracht ziehen.

    Vielleicht hat ja jemand eine glorreiche Idee diesbezüglich

    MfG Alex

  • #2
    Das Bild gehört schon mal definitiv nicht IN die Textbox.

    Vielmehr würde ich für einen Schritt den der Benutzer machen soll ein einzelnes UserControl anlegen. Dort steht der Text drin und diesem wird ein Bild zugewiesen. Das kann ein ganz einfaches UserControl mit einem Label und einem ImageContainer (ich weiss grad leider net wie das Teil genau heisst) sein. Also public Property hat das Ding dann einfach Text + Image. Davon kannst Du Dir beliebig viele erzeugen und die dann einfach in eine normale Form, ein Panel oder ein FlowLayoutPanel klatschen. Schon hast Du alles dynamisch

    Comment


    • #3
      Hallo,

      gut, dass du nicht mit PictureBox arbeiten willst; das wäre eine gravierende Verschwendung von Ressourcen. Hast du über RichTextBox nachgedacht? Da könnte so etwas möglich sein; allerdings habe ich keine Idee, was du dir eigentlich vorstellst. Aber da ich keine Ahnung von Grafik habe, könnte ich dir sowieso nicht weiterhelfen.

      Jürgen

      Comment


      • #4
        Also um das ganze etwas zu verdeutlichen, ich bekomem meine gesamte Wegplanung auf einmal ausgegeben, diese erscheint im Moment in einer TextBox, war bisher vollkommen ausreichend. Ungefähr so:
        Fahre zu Lager 1 Regal 1 und hole Artikel xyz; "Bild soll genau hier hin"
        Fahre zu Lager 1 Regal 4 und hole Artikel abc; "nächstes Bild hier"
        Fahre zu Lager 2 Regal 5 und hole Artikel keks; "folgendes Bild hier"

        Nun wäre es natürlich sehr schön wenn ich hinter jeder dieser Zeilen einen Pfeil einbinden könnte, der einfach nur von jener Position an der sich der Benutzer gerade befindet in die Richtung zeigt, in die er von dort aus weitergehen müsste.

        Hoffe das ganze war jetzt verständlicher

        P.S.: Fanderlf werde mal über deine Lösung mit den user Controls nachdenken, schonmal danke

        Comment


        • #5
          Warum ist die PictureBox so ein Resourcenfresser? Ginge die Variante mit dem UserControl für jeden Schritt nicht? Zur Not könnte man das Bitmap in der gewünschten Größe selbst noch auf den Canvas zeichnen (z.B. in den Hintergrund eines Panels)

          Comment


          • #6
            Doch die Variante mit dem UserControl einem Label / Textfeld und einer pictureBox geht schon, darum ja auch das Danke dafür . Implementier die Dinge nur nicht sofort die ich dann in einem Forum als Lösungsvorschlag bekomme, sondern denke schon gern nochmal selbst darüber nach. Das ganze ist für meinen Fall allerdings vollkommen ausreichend.

            MfG Alex

            Comment


            • #7
              Originally posted by fanderlf View Post
              Warum ist die PictureBox so ein Resourcenfresser?
              Sorry, ich muss wohl etwas zurückhaltender sein mit solchen pauschalen Äußerungen. Ich glaube, ich hatte so etwas mehrfach in Foren gelesen und jetzt aus der vagen Erinnerung geholt. Leider finde ich keine Bestätigung dafür.

              Auf jeden Fall wäre deine Formulierung ein Missverständnis. Eine einzelne PictureBox oder auch einige wenige wären mit Sicherheit keine Verschwender. Das gilt allenfalls für das, was hier diskutiert wurde: mehrere/viele Bilder zur Laufzeit hinzufügen. Ansonsten gilt:
              Originally posted by Jürgen Thomas
              Aber da ich keine Ahnung von Grafik habe, könnte ich dir sowieso nicht weiterhelfen.
              Gruß Jürgen

              Comment


              • #8
                Klar immer selber nochmal drüber reflektieren obw wirklich das ist was man braucht. Jedem Vorschlag blind nachzurennen ist nicht gut.

                Ich kann bei der Picturebox übrigens auch das Gegenteil nicht bestätigen. Aber wenn man nur ein paar Bilder hat (er hat ja nur Pfeile für die Richtungen) und der PictureBox immer nur eine Referenz übergibt, kann ich mir nicht vorstellen warum das ein Resourcenfresser sein soll. Ausser die PictureBox würde sich das Bild jedesmal kopieren, aber das würde doch niemand so programmieren... obwohl bei Microsoft weiss man nie

                Comment


                • #9
                  Die hast eine Menge von Textzeilen und möchtest jetzt zu jeder eine weitere Spalte mit einem Bild hinzufügen. Hört sich für mich nach einem Grid (z.B das DataGridView) an.

                  Comment


                  • #10
                    Ja stellt durchaus auch eine Möglichkeit zur Lösung des Problems dar, ist vielleicht sogar ressourcenschonender als UserControl + TextField + PictureBox.
                    Denke als Anregung auch für andere sollte der Thread genügen, mein Problem ist ja mittlerweile gelöst.

                    MfG Alex

                    P.S.: Noch ein simpler Beispielcode für ein GridView

                    [highlight=c#]

                    string pfadrechts = @"\Pfad zum Bild";
                    public void grid()
                    {
                    string[] testarray = new string[8];
                    //Beispieldaten
                    for(int i = 0; i < testarray.Length; i++)
                    {
                    testarray[i] = "zeile " + i;
                    }
                    int j = 0;
                    foreach (string s in testarray)
                    {
                    //Neue Zeile erzeugen
                    dataGridView.Rows.Add();
                    //Zeile j und Spalte 1 mit Wert aus dem Array füllen
                    dataGridView.Rows[j].Cells[0].Value = testarray[j];
                    //Höhe für die Zeile anhand der Bildgröße setzen
                    dataGridView.Rows[j].Height = 34;
                    //Bild in Spalte 2 der Zeile laden
                    dataGridView.Rows[j].Cells[1].Value = Image.FromFile(pfadrechts30);
                    j++;
                    }
                    j = 0;
                    }
                    [/highlight]
                    Zuletzt editiert von alexm83; 09.05.2010, 21:10.

                    Comment

                    Working...
                    X