none
PictureBox Text ausgeben

    Frage

  • Hallo zusammen,

     

    wir sollen in der Schule ein Programm schreiben, in welchem man mit einem Button 2 verschiedene Zufallszahlen erzeugen kann, diese in 2 Labels ( oder Pictureboxen ) darstellt. Mit Labels hab ich es hinbekommen, ich kann sogar die 2 Zahlen auf Gleichheit, oder Größer und Kleiner untersuchen und anderweitige Befehle dazu ausfürhen. Einige behaupten jedoch, dass man die Zahlen auch in Pictureboxen darstellen kann, wenn man diese entsprechend als String convertiert. Das hab ich bis jetzt jedoch noch nicht geschafft. Pictureboxen sind doch eigentlich nur zum Anzeigen von Bildern gedacht, oder ?

    Mittwoch, 30. November 2011 20:03

Alle Antworten

  • Hi,

    man kann das schon machen. Ob man das will, ist eine andere Frage :)

      http://stackoverflow.com/questions/849359/how-to-draw-text-on-picturebox

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Mittwoch, 30. November 2011 20:45
  • Ich habe mal so angefangen ( zahl3 und zahl4 sind die jeweiligen Pictureboxen ), die auskommentierten Zeilen kannst ruhig mitinterpretieren, sind Versuche gewesen:


            private void neu_Click(object sender, EventArgs e)
            {
                Random z = new Random();
               
                zahle = Convert.ToString(z.Next(1, 10));
                zahl4.
               
               
               // string zahl111 = zahle.ToString();
                //zahl1.Text = zahl111;
                //zahle = zahl4;
           
                zahle2 = Convert.ToString(z.Next(2, 10));
               // zahl3 = zahle2;

            }

    Mittwoch, 30. November 2011 20:51
  • In meinem vorigen Posting steht ein Link. In dem Posting, dass Du dort findest, steht ein komplettes Codebeispiel. Welches Problem hast Du denn konkret damit?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Mittwoch, 30. November 2011 21:10
  • Dass ich die Zahlen mit Zufallsgenerator erzeugen soll und dann jeweils in 2 Pictureboxen ausgeben soll....
    Mittwoch, 30. November 2011 21:13
  • Hallo andes135,

    es ist im Prinzip recht simpel. Du erzeugst deine Zufallszahlen, holst dir von jedem der beiden PictureBoxen das jeweilige Graphics Object (Methode CreateGraphics()). Das Graphics Objekt kannst du dir wie einen Stift vorstellen, der in "sein" Control zeichnen kann.

    Um nun einen Text zu zeichnen, verwendest du die Methode "DrawString" (http://msdn.microsoft.com/de-de/library/46c36z9t(v=VS.100).aspx) des Graphics Objekts. Vergiss bitte nicht, die Graphicsobjekte am Schluss zu disposen, sonst fängst du dir memleaks ein ;-)

    Ich hoffe ich konnte dir weiterhelfen. Solltest du noch Fragen haben, immer her damit! ;-)

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Freitag, 2. Dezember 2011 11:57
  • Hallo Holger,

     

    ich habe das jetzt mit Labels realisiert und so fuktioniert es auch. Schulkollege hatte die Aufgabenstellung nicht mehr richtig im Kopf.

    Nun habe ich noch eine Frage und zwar, wenn ich z.Bsp. auf einen Startbutton drücke, soll die Form ( die grafische Oberfläche ), neu geladen werden. Also die Labels und Buttons, die eine Hintergrundfarbe bekommen haben sollen wieder in den Ursprungszustand versetzt werden. Ich glaube, das geht mit Form1_Load. Weiß aber nicht so recht, wie ich das anstellen soll.....

    Sonntag, 4. Dezember 2011 10:00
  •  Hi andes135,

    ich habe das jetzt mit Labels realisiert und so fuktioniert es auch. Schulkollege hatte die Aufgabenstellung nicht mehr richtig im Kopf.

     um welches Control es sich hierbei handelt, spielt keine Rolle. Es funktioniert bei allenen gleich, egal ob Label oder PictureBox ;)

     

    Nun habe ich noch eine Frage und zwar, wenn ich z.Bsp. auf einen Startbutton drücke, soll die Form ( die grafische Oberfläche ), neu geladen werden. Also die Labels und Buttons, die eine Hintergrundfarbe bekommen haben sollen wieder in den Ursprungszustand versetzt werden. Ich glaube, das geht mit Form1_Load. Weiß aber nicht so recht, wie ich das anstellen soll.....Nei


    Nein, im gegensatz zu Webseiten wird die Form1_Load nur einmal, eben beim Laden der Form, aufgerufen. Ich verstehe ehrlich gesagt nicht, wo euer Problem liegt. Anstelle von Form1_Load könnt ihr diesen Event doch im EventHandler des Click-Events eures Buttons behandeln. Ich werdet wohl nicht drumrumkommen eure Controls wieder per Hand zurückzusetzen, was aber auch nicht sooo schwierig sein sollte.

    Tipp von mir: Erstellt eine Methode, in der ihr die Controls initialsiert (also in den "Ursprungszustand" versetzt) werden, und ruft diese einfach beim Click-Event eures Buttons auf.

    Solltest du noch fragen haben...immer her damit :)

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Sonntag, 4. Dezember 2011 11:10
  • Hallo Holger,

     

    danke für Deine Antwort. Methode ist klar, ist die public void ? Wie initialisert man die Controls und setzt sie in den Ursprungszustand zurück ?

    Sonntag, 4. Dezember 2011 11:49
  • Hallo andes153,

    ja, du kannst public void verwenden.

    Zum zurücksetzen, holst du dir die Controls von deren ControlContainer (der Form z.B. wenn diese direkt auf der Form liegen), und setzt deren Eigenschaften auf den Standardwert zurück. Welche Ihr jetzt zurücksetzen wollt, kann ich natürlich nicht wissen, aber das ist die Vorgehensweise dafür.

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Sonntag, 4. Dezember 2011 12:00
  • wie würd würd diese methode zum bsp für einen einzelnen button aussehen ?
    Sonntag, 4. Dezember 2011 12:17
  • Das hängt davon ab, WAS GEANU Ihr zurücksetzen wollt.

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Sonntag, 4. Dezember 2011 12:29
  • nun ja, die buttons z.bsp. haben beim starten des programmes die farbe color.control. nachdem ja dem button irgendwann eine hintergrundfarbe zugewiesen bekommt, möcht ich dass der button beim klicken des "start-button" wieder in den ursprungszustand zurück gesetzt wird. genauso auch bei den labels. aber bei coloreigenschaften gibt es die "control"-farbe leider nicht.
    Sonntag, 4. Dezember 2011 12:40
  • Hi andes135,

    das würde so aussehen:

    private void ResetControls() {
      this.button1.BackColor = SystemColors.ButtonFace;
    }
    

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    Sonntag, 4. Dezember 2011 16:31