Bilder in Programmen

Den Einsatz von Bildern in C#-Programmen möchte ich an einem kleinen Projekt erläutern. Das oben gezeigte Programm stellt das Spiel Schere, Stein, Papier dar. Bei einem Klick auf den Button wird zufällig eines der Bilder für Schere, Stein oder Papier angezeigt. Bilder werden in C#-Anwendungen in einer PictureBox dargestellt. Zunächst wird das Bildobjekt mit Image.FromFile() von der Festplatte geladen. Anschließend kann es gesetzt werden, indem das Image-Attribut auf das geladene Bildobjekt gesetzt wird.

        private void btnSpielen_Click(object sender, EventArgs e)
        {
            Random rndZufallszahlengenerator = new Random();
            int iZufallszahl = rndZufallszahlengenerator.Next(3);
 
            if (iZufallszahl == 0)
            {
                // Das Bild wird geladen...
                Image imgSchere = Image.FromFile("Bilder/Schere.png");
                // und angezeigt.
                pbBild.Image = imgSchere;
            }
            else if (iZufallszahl == 1)
            {
                // Die beiden Schritte von oben können auch in 
                // einem Schritt zusammengefasst werden.
                pbBild.Image = Image.FromFile("Bilder/Stein.png");
            }
            else if (iZufallszahl == 2)
            {
                pbBild.Image = Image.FromFile("Bilder/Papier.png");
            }
        }

Eigene Grafiken erstellen

Neben der bloßen Anzeige von Bildern, kann die PictureBox auch dazu genutzt werden, um selbst darin zu malen. Wir nutzen dazu eine einfache Anwendung bestehend aus einer PictureBox und einem Button.

Bei einem Klick auf den Button werden ein rotes Rechteck und eine blaue Linie jeweils neu gezeichnet. Dabei wandern die beiden Objekte bei jedem Klick ein Stückchen weiter.

Die Akteure:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace PaintDemo
{
    public partial class MainForm : Form
    {
        public MainForm()
	{
	    InitializeComponent();
	}
 
        // Die linke obere Ecke der Figur. 
	int iX = 0;
	int iY = 0;
 
	void PictureBox1Paint(object sender, PaintEventArgs e)
	{
            // Mit Hilfe des Graphics-Objektes wird gemalt
	    Graphics g = e.Graphics;
 
            // Die Linie und das Rechteckt werden gezeichnet.
            //
            //         Stiftfarbe (X1|Y1) (X2  |  Y2)
	    g.DrawLine(Pens.Blue, iX, iY, iX+50, iY+80);			
            //              Stiftfarbe (X|Y)  Breite Höhe
	    g.DrawRectangle(Pens.Red, iX, iY, 50,    80);
	}
 
	void Button1Click(object sender, EventArgs e)
	{
	    // Erzwingt ein Repaint der PictureBox. Damit wird das 
	    // Paint-Event ausgelöst
	    pictureBox1.Invalidate();
 
            // Die Startkoordinaten werden verschoben			
	    iX += 1;
	    iY += 1;			
	}
    }
}