Ein Bild am Fenster und Bildwechsel

delphinhawe

Erfahrenes Mitglied
Hallo!

Ich freue mich Euch im Tutorial für C# kennenzulernen und Informationen auszutauschen. ;-)

Ich wollte wissen, wie ein Bild am Fenster programmiert wird?
Zweite: Wie schreibt man Programmtexte, wenn ich die Schaltfläche ,,Next“ klicke, damit das nächste Bild kommt (if else)?
Bitte in den Text einfügen, damit ich weiß, wo die Programmsätze angeordnet sind.

Ich freue mich auf Eure Antwort!

Gruß delphinhawe

Code:
using System;
using System.Windows.Forms;
using System.Drawing;

public class Fenster : Form
{
	Button	TEXTE;
		
	public Fenster()
	{
		TEXTE	= new Button();
		TEXTE.Text	= "Next";
		TEXTE.Location	= new Point (180,300);		// Koordinate (X,Y)
		TEXTE.Size	= new Size(150,50);
		TEXTE.Font	= new System.Drawing.Font("Arial",24);
		TEXTE.ForeColor	= Color.FromArgb(255,255,0);
		Controls.Add(TEXTE);
		Width = 500;
		Height = 500;
	}
	
	static void Main()
	{
		Fenster HAUPTFENSTER = new Fenster();
		HAUPTFENSTER.Text = "delphinhawe's GUI";
		HAUPTFENSTER.BackColor = Color.FromArgb(73,116,255);
		HAUPTFENSTER.TopMost = true;
		
		HAUPTFENSTER.FormBorderStyle = FormBorderStyle.Fixed3D;
		HAUPTFENSTER.MinimizeBox = false;
		HAUPTFENSTER.MaximizeBox = false;
		Application.Run(HAUPTFENSTER);
	}
}
 

Anhänge

  • PICTURE.doc
    22 KB · Aufrufe: 48
Zuletzt bearbeitet:
Hi

Ich weiß noch nicht so ganz was du vor hast :confused:
Kannst du dein Problem mal etwas genauer beschreiben?

zu deinem Anhang:
1. häng bitte keine Word-Dokumente an! Nicht MS Office User werden es dir danken ;)
nutz lieber die CODE-Tags für Quellcodeauszüge
2. Was willst du machen? eine Konsolenanwendung oder eine WindowsForm? Wie es zur Zeit aussieht, wird das ein Mischmasch
 
Hi.

Hab mal den Quelltext in den Beitrag kopiert.

@niggo - Schaut schon nach WinForms Anwendung aus, nur das halt alles selbst geschrieben ist, und deswegen das ganze ein wenig anders aussieht als wenn es der Designer von VisualStudio macht. ;)

@delphinhawe
Ich hoff ich hab dich mal richtig verstanden.

Gibt verschiedene Möglichkeiten wie du sowas realisieren könntest.

Auf jedenfall brauchst du mal das Click-Event vom Button um überhaupt darauf reagieren zu können. Für die Bilddaten bietet sich ein Array bzw. eine ArrayList an.

Code:
using System;
using System.Windows.Forms;
using System.Drawing;

public class Fenster : Form
{
	Button	TEXTE;
	PictureBox picBox;

	private int picCount;
	private string[] imagePaths;
		
	public Fenster()
	{
		TEXTE	= new Button();
		TEXTE.Text	= "Next";
		TEXTE.Location	= new Point (180,300);		// Koordinate (X,Y)
		TEXTE.Size	= new Size(150,50);
		TEXTE.Font	= new System.Drawing.Font("Arial",24);
		TEXTE.ForeColor	= Color.FromArgb(255,255,0);
		TEXTE.Click += new EventHandler(TEXTE_Click);

		picBox = new PictureBox();
		picBox.Size = new Size(320,240);
		picBox.Location = new Point(90, 50);

		Controls.Add(picBox);
		Controls.Add(TEXTE);

		Width = 500;
		Height = 500;

		LoadImages();
	}
	
	static void Main()
	{
		Fenster HAUPTFENSTER = new Fenster();
		HAUPTFENSTER.Text = "delphinhawe's GUI";
		HAUPTFENSTER.BackColor = Color.FromArgb(73,116,255);
		HAUPTFENSTER.TopMost = true;
		
		HAUPTFENSTER.FormBorderStyle = FormBorderStyle.Fixed3D;
		HAUPTFENSTER.MinimizeBox = false;
		HAUPTFENSTER.MaximizeBox = false;
		Application.Run(HAUPTFENSTER);
	}

	private void LoadImages()
	{
		imagePaths = System.IO.Directory.GetFiles(@"C:\Path\to\Images", "*.jpg");
		if (imagePaths.Length > 0)
		{
			picBox.Image = Image.FromFile(imagePaths[0]);
		}
	}

	private void TEXTE_Click(object sender, EventArgs e)
	{
		picCount++;

		if (picCount < imagePaths.Length)
		{
			picBox.Image = Image.FromFile(imagePaths[picCount]);
		}
	}
}

In dem Beispiel hier werden jetzt die Pfade zu jpg-Dateien eines Verzeichnisses in einem Array gespeichert, das erste Bild angezeigt, und bei einem Klick auf den Button wird zum nächsten Bild gewechselt.

Das fett geschrieben ist der Code von mir.


MfG,
Alex
 
@niggo
Ich programmiere im Moment eine GUI-Oberfläche mit Hilfe von Windows Forms.
Aus der Fachschule habe ich die Grundlage erhalten: Konsolenprogramme zum Beispiel Kontrollsrukturen (einfache und verschachtelte Anweisungen und arithmetische Operatoren usw.).
Der nächste Einstieg ist die GUI-Oberfläche und dies ist mit Konsolenprogrammen nicht vergleichbar,
weil das wieder eine andere Programmiersprache ist.
Ich weiss deshalb auch nicht so genau, wie die if-Anweisungen in GUI umgesetzt werden sollen.
Für mich ist die GUI-Oberfläche ein kleiner Schritt , also die Basis. Außerdem bin ich fasziniert von GUI (Bild am Fenster), weniger von dem Konsole-Programm (wegen der schwarzen Farbe ).

@ Alex
Vielen Dank! ;-)
Ich werde alles in Ruhe lesen. Wenn ich ein Problem habe, schreibe ich wieder ins Forum.
Erst werde ich probieren bis ich alles kapiere. Beim Start klappt das Programm im Moment nicht.
Na ja, ich muss halt selber versuchen, um den Inhalt zu verstehen. Ich hätte zuerst fragen sollen, wie das kleine Bild am Fenster eingefügt wird, sodann den zweiten Schritt, wie das Bild am Fenster gewechselt wird.
Die Inhalte sind jetzt PictureBox und if gemischt, was mich ein wenig durcheinander bringt. Ich werde nun erst einmal IF und PictureBox beschäftigen, damit ich den Überblick bekomme.
Wenn Du möchtest, dann kannst Du das Bild (also am Fenster) außer IF programmieren und zeigen.

Zunächst war es das – nochmals danke. ;)

Gruß delphinhawe


SharpDevelop Vers. 0.98
 
Alexander Schuc hat gesagt.:
@niggo - Schaut schon nach WinForms Anwendung aus, nur das halt alles selbst geschrieben ist, und deswegen das ganze ein wenig anders aussieht als wenn es der Designer von VisualStudio macht. ;)

wusste nicht, dass das auf diese Weise auch geht, hatte ich halt bisher noch nie gesehen. Naja man lernt nie aus :-(
 
Also, Array scheint interessant zu sein, geht mir aber zu weit.
werde aber zum Schluss zu den Thema Array fragen!
SCHRITT 1 (nur ein kleines Bild am Fenster)
Anbei Programmtexte
Bitte schauen, ob ein fehler drin ist, etwas fehlt kein Bild am Fenster
(picBox.Image = new Bitmap"head.jpg") ?
Wenn alles klappt, dann zum nächsten Schritt ,,if" (voerst ohne Bild)!

LG delphinhawe

Code:
.
// project created on 11.10.2005 at 22:23
using System;
using System.Windows.Forms;
using System.Drawing;

public class Fenster : Form
{
	Button		TEXTE;
	PictureBox	picBox;   
	
		
	public Fenster()
	{
		TEXTE 				= new Button();
		TEXTE.Text			= "Next";
		TEXTE.Location		= new Point (180,300);		
		TEXTE.Size			= new Size(150,50);
		TEXTE.Font			= new System.Drawing.Font("Arial",24);
		TEXTE.ForeColor		= Color.FromArgb(255,255,0);
		
		picBox				= new PictureBox();		
		picBox.Size			= new Size(320,240);	
		picBox.Location		= new Point(90,50);		
		picBox.ForeColor	= Color.FromArgb(255,0,0);
		picBox.BackColor	= System.Drawing.SystemColors.ActiveCaption;
		picBox.BorderStyle 	= System.Windows.Forms.BorderStyle.Fixed3D;
		picBox.Image		= new Bitmap("head.jpg");				
		Controls.Add(picBox);	
		Controls.Add(TEXTE);
		Width = 500;
		Height = 500;
	}
	
	static void Main()
	{
		Fenster HAUPTFENSTER = new Fenster();
		HAUPTFENSTER.Text = "delphinhawe's GUI";
		HAUPTFENSTER.BackColor = Color.FromArgb(73,116,255);
		HAUPTFENSTER.TopMost = true;
		
		HAUPTFENSTER.FormBorderStyle = FormBorderStyle.Fixed3D;
		HAUPTFENSTER.MinimizeBox = false;
		HAUPTFENSTER.MaximizeBox = false;
		Application.Run(HAUPTFENSTER);
	}	
}
 
If Anweisungen sind in allen Programmiersprachen von der Funktionsweise gleich, sehen manchmal nur ein wenig anders aus.

Windowsprogrammierung ist im Unterschied zu einer Konsolenanwendung nur Ereignisgesteuert möglich. In einer Konsolenanwendung kann man ablaufgesteuert programmieren.

In Windowsprogrammen reagiert man auf Ereignisse und löst sie aus, in Konsolenprogrammen warten man nur auf bestimmte Eingaben.
 
@mage
Ja, das stimmt.
Weißt Du, wie das Bild zu laden ist, also einen einfachen Weg zu picBox?
Ich habe nämlich 4 verschiedene Imagen ausprobiert, leider kein Erfolg.
Siehe Fehlermeldung!
Ich habe gelesen, daß das Bild auch ohne Verzeichnis (z.B. C:\ oder D:\ usw. ) ,,happyBox.Image = new Bitmap(„happy.bmp” geladen werden kann.
Ich begreife es nicht!
Bitte schaue im Code (Fett) nach, was falsch geschrieben ist.
Ich danke Dir.

Gruß delphinhawe

Code:
using System;
using System.Windows.Forms;
using System.Drawing;

public class Fenster : Form
{
	PictureBox	picBox;   
	
		
	public Fenster()
	{
	picBox= new PictureBox();		
	picBox.Size= new Size(320,240);	
	picBox.Location= new Point(90,50);		
	picBox.ForeColor= Color.FromArgb(255,0,0);
	picBox.Image= new Bitmap(@"D:\C#\Picture\head.jpg"); //?
// or
// picBox.Image = new Bitmap("head.jpg");  //?
// or
// picBox.BackgroundImage = System.Drawing.Bitmap.FromFile("D:\head.jpg");
// ?
// or
// System.Drawing.Image image = System.Drawing.Image.FromFile(@"D:.jpg");  // ?		
                Controls.Add(picBox);
	}
	
	static void Main()
	{
		Fenster HAUPTFENSTER = new Fenster();
		Application.Run(HAUPTFENSTER);
	}	
 }
 

Anhänge

  • pic4.gif
    pic4.gif
    26,2 KB · Aufrufe: 56
  • pic5.gif
    pic5.gif
    5,2 KB · Aufrufe: 54
Zuletzt bearbeitet:
Grundsätzlich funktioniert deine erste Version des Aufrufes.
Vielleicht solltest du noch den Basis Konstruktor deiner Fensterklasse aufrufen.
Code:
public Fenster()
{
     base.Form();
    ....Rest Code....
}
 
Oh, bei mir klappt es nicht!
Kannst Du bitte in den Code einfügen? Damit ich weiß, wo das ist!
Ich bin Anfänger, was die GUI-Oberfläche betrifft.
Kannst Du mir per Dateiname schicken?
Danke im Voraus.
 

Neue Beiträge

Zurück