Laden...
S
Benutzerbeschreibung

Forenbeiträge von SGT_BOB Ingesamt 125 Beiträge

16.04.2005 - 00:29 Uhr

Wenn du das komplette SDK geladen hast, sollte der SampleBrowser auch mit installiert sein und auch eine Doku. Soweit ich weiß aber (leider) nur in C++.Net.

Vielleicht hast du beim Setup was falsch gemacht (Haken irgendwo entfernt oder so).

Hast du das komplette SDK (incl. C++.Net, C#, VB.Net) ???

04.04.2005 - 23:48 Uhr

Ich rauche (meistens zuviel), dafür trink ich seeeeeehr selten Alk und Essen (hmmm.... Pizza)

Sport, was ist das??❔D 😁 Doch... Tastatur - Finger - Aerobik und ein wenig Hallen - Jojo 😁 (Spaß muss sein)

Aber ich hab zwei Kiddies und die halten einen ständig auf Trab. 8)

04.04.2005 - 01:24 Uhr

Wow... alle Achtung für dieses Tut. 👍
Sowas hab ich schon lange gesucht. Mich würd mal interessieren wie lange du schon (C#) proggst und vor allem wie weit du das hier noch durchziehen möchtest. Ist doch ne ganze Menge Arbeit.
Hab mich mal vor die DX-Doku gesetzt, ist schon ziemlich viel was da drin steht 😁 (alleine D3D betreffend). Respekt vor dem der sich da durch kämpft. 🤔

Wie gesagt, nur weiter so, bin gespannt...

03.04.2005 - 15:15 Uhr

Erst mal Danke daß du dich so mit meinem Thema auseinander setzt. 😉

Ums kurz zu fassen, in diesem Thread hab ich schon erklärt, worauf das ganze hinauslaufen soll.

Ich hab jetzt eine MDI Form mit zwei Unterformularen und je einer PictureBox. In dem einem Fenster wird mein Quellbild geladen und in das andere sollen nach und nach, ausgewählte Bildschirmausschnitte kopiert werden. (siehe Thread).
Ich möchte jetzt die Tasten von der jeweils ausgewählten Form (bzw. dessen PictureBox) die Tasten abfragen, um das Auswahlrechteck zu bewegen.
Hoffe das ich das jetzt einigermaßen erklären konnte. 😁

Muss dafür nicht jeweils die PictureBox das KeyEvent zugewiesen bekommen.


pbox.KeyDown += new KeyEventHandler(PBoxOnKeyDown);
pbox.KeyUp += new KeyEventHandler(PBoxOnKeyUp);

Wenn die PictureBox jetzt den Focus hat, müssten ich doch mit dem folgendem Code ein Ausgabe bekommen, oder?


                protected void PBoxOnKeyDown(object obj, KeyEventArgs kea)
	{
		Keys key = kea.KeyCode;
		Console.WriteLine("obj: "+obj.ToString());
		Console.WriteLine("PBoxOnKeyDown: "+key.ToString());
	}
	
	protected void PBoxOnKeyUp(object obj, KeyEventArgs kea)
	{
		Keys key = kea.KeyCode;
		Console.WriteLine("obj: "+obj.ToString());
		Console.WriteLine("PBoxOnKeyDown: "+key.ToString());
	}

Momentant hab ichs so gemacht, wie du's (herbivore) mir beschrieben hast.


...
this.KeyPreview = true;
...
this.KeyDown += new KeyEventHandler(PBoxOnKeyDown);
this.KeyUp += new KeyEventHandler(PBoxOnKeyUp);

Aber so wird nur zwischen den beiden Formen hin und her geswitcht.

Vielleicht hast du oder jemand anders ja noch eine Idee.

03.04.2005 - 11:07 Uhr

Hui, ein Wochenendfrühaufsteher. 😁

Hatte der PictureBox den Focus schon gegeben, aber irgendwie hat's auch nicht so wirklich funktioniert. Hab auch keine anderen Steuerelemente auf der Form. Hmmm... 🙁

Das KeyPreview ist auch auf true, ist es das nicht standarmäßig???

Weiß nicht mehr weiter.

Kann das damit zusammenhängen, das ich ein MDI From erstellt hab. Eigentlich doch nicht oder, da ich ja so auch nur ein Unterformular erstellt habe. Oder???

02.04.2005 - 23:42 Uhr

Hallo Leute.

Ja...genau... ich schon wieder... 😁

Also ich hab schon wieder ein Problem mit dem PictureBox-Element. Und zwar möchte ich bestimmte Tasten abfangen. Habs mal so versucht:

Im Konstruktor:


pbox.KeyDown += new KeyEventHandler(PBoxOnKeyDown);


protected void PBoxOnKeyDown(object obj, KeyEventArgs kea)
{
	Keys key = kea.KeyCode;				Console.WriteLine("PBoxOnKeyDown: "+key.ToString());
}

Hab erst mal nur eine Kontrollausgabe um zu sehen ob da überhaupt was passiert.
Aber mir wird nix ausgegeben.
Irgendwie scheint er da nicht drauf anzuspringen. Wieso nicht???

02.04.2005 - 21:47 Uhr

@VizOne:

Jippie... genau das war mein Problem. Manchmal sieht man den Wald vor lauter Bäumen nicht. 😁

Danke an alle.

ABER... Mein Problem von weiter oben (das mit der Zwischenablage) besteht immer noch. X(

02.04.2005 - 21:27 Uhr

@SGT_BOB
Haste denn schon mal versucht Projekte an Land zu ziehen auch wenns für lau sein sollte ?

@claniboy:

Ähm, wie genau meinste das??? Projekt an Land ziehen. Da würd ich mich doch freuen, wenn du mir das mal näher erleuterst. 😁

@Rene Paschold:

Meine Frau hat die ganze Ausbildungszeit hinter mir gestanden. Trotz das sie die meiste Zeit der Schwangerschaft allein war, trotz der Tatsache das manche Sozialhilfeempfänger mehr Geld zum Leben hatten als wir, trotz...
Damit könnte ich noch weiter machen.
Mittlerweile sind wir soweit das ich mich auch nach anderen Jobs umsehe, die mit meinem Berufsfeld nicht im entferntesten was zu tun haben. Hab aber Angst das ich zulange von der "Materie" getrennt bin und mir ein Berufseinstieg in der IT-Branche noch schwerer fällt als momentan. Schließlich hab ich nicht gelernt, um was ganz anderes zu machen.

Ich hoffe ernsthaft das es mit der IT-Branche bald mal wieder aufwärts geht. Aber, wem sag ich das...

02.04.2005 - 14:29 Uhr

Also erstmal danke für die vielen Antworten und die heiße Diskussionsrunde. 🙂

Ich werd es mal aufklären, was ich genau vorhab. Es soll ein Programm zur Bearbeitung von Tilesets werden. Dabei sollen aus dem einen Bild die gewählten Teile in ein neues oder vorhandenes Bild eingefügt werden können. Die "Template" aus dem einfachen Grund, weil ich da ein Schachbrettmuster in der Größe 32x32 drauf habe. Da läßt sich leichter erkennen, ob alles passt. 😁

Wie gesagt "bewegen" kann ich das Rechteck schon. Was ich nicht gemacht hab Paint Ereignis für die PictureBox aufzurufen. Das ist schon wahr. Werds aber mal probieren.

Vielleicht hat ja noch jemand eine Idee, wie ich den aktuell ausgewählten Ausschnitt des "Originalbildes" in die Zwischenablage kopieren kann. Da ich ja immer nur einzelne Teile des Bildes brauche(z.B. 32x32 Pixel groß).

CU @ll SGT_BOB

02.04.2005 - 01:43 Uhr

Hatte mir selber mal nen kleinen Player gebastelt.
Ich weiß nicht ob dir das hier weiterhilft:



using DX_AudioVideo;
using System;
using System.IO;
using System.Collections;
using Microsoft.DirectX.AudioVideoPlayback;

class MP3_Header
{
	FileInfo fi = null; 
	FileStream fs;
	
	Track track;
// Daten um Header zu finden und zu speichern
	
	int neue_Zahl;
	int ergebnis;
	int rest;
	string temp = "";
	string output = "";	// binär Ausgabe des Headers als String
	byte[] header = new byte[4];	// 4 Bytes des Headers
	int[] IntBytes = new int[4];
	
	int headerpos;		// Headerheaderposition
	
	// MP3 Header-Daten				Bit
	string SyncWord;			// 0 - 11
	string MPEG_Version;		// 12
	string MPEG_Layer;			// 13 - 14
	string ProtectionBit;		// 15
	string Bitrate;				// 16 - 19
	string SamplingFrequency;	// 20 - 21
	string PaddingBit;			// 22
	string PrivateBit;			// 23
	string Mode;				// 24 - 25
	string ModeExtension;		// 26 - 27
	string Copyright;			// 28
	string OriginalHome;		// 29
	string Emphasis;			// 30 - 31
	
	// MPEG 1 & 2 Layer 1 are the same kbit/s
	string[] Layer1 = new string[]{"-","32","64","96","128","160","192","224","256","288","320","352","384","416","448","-"};

	// MPEG 1 & 2 Layer 2 are the same kbit/s
	string[] Layer2 = new string[]{"-","32","48","56","64","80","96","112","128","160","192","224","256","320","384","-"};
	
	// MPEG 1 Layer 3
	string[] Layer3_1 = new string[]{"-","32","40","48","56","64","80","96","112","128","160","192","224","256","320","-"};

	// MPEG 2 Layer 3
	string[] Layer3_2 = new string[]{"-","8","16","24","32","64","80","56","64","128","160","112","128","256","320","-"};
	
	int FrameCount;
	
	public MP3_Header(Track track)
	{
		//this.GetHeader();
		this.track = track;
		Console.WriteLine("MP3_Header angelegt mit: MP3_Header("+track.GetPath()+")");
		this.GetHeaderPos();
		this.GetHeaderParts(output);
		this.CountFrames();
	}
	
	public void GetHeader(byte[] header)
	{
	
		/*
		 * Jedes Byte wird per "Restverfahren" in seine 8 Bits zerlegt.
		 * Dabei wird die Reihenfolge der Bits umgekehrt.
		 * Zur Kontrolle kann jeder Rechenschritt ausgegeben werden. (Kommentierung entfernen)
		 * */
		foreach( byte b in header )	// für jedes Element in "ByteArray"
		{
			neue_Zahl = b;
			for(int i = 0; i < 8; ++i)	// 8 mal ( 8 bit = 1 byte)
			{
				ergebnis = neue_Zahl/2;	// Ergebnis der Division
				rest = neue_Zahl%2;		// Restwert der Division

				//Console.WriteLine("{0,3} durch 2 = {1,3} Rest: {2}", neue_Zahl, ergebnis, rest);
				
				temp = temp.Insert(0,rest.ToString());	// Rest im temporären String an Position 0 einfügen
														// wegen umgekehrter Reihenfolge der bits
				neue_Zahl = ergebnis;					// zum Weiterrechnen im nächsten Durchlauf
			}
			output += temp;//+" ";		// Einfügen eines Leerzeichens um jeweils 8 Bit voneinander zu trennen
			temp = "";				// temporären String wieder "leeren"
		}
		Console.WriteLine(output);
		fs.Close();
	}
	
	public void GetHeaderPos()
	{
		//fi = new FileInfo(@"C:\mp3\Track 01-.mp3");
		//fi = new FileInfo(@"C:\mp3\01 - Flat On The Floor.mp3");
		//fi = new FileInfo(@"C:\mp3\10 - Another Hole In The Head.mp3");
		fi = new FileInfo(track.GetPath());
		Console.WriteLine("MP3_Header.GetHeaderPos():"+track.GetPath());
		fs = fi.OpenRead();
		
		byte b;
		headerpos = 0;
				
		do
		{
			b = (byte)fs.ReadByte();
			
			//Console.WriteLine("Byte Nr: {0,4}: {1} ",headerpos,(int)header[0]);
			headerpos++;
		}while(b != 0xff);
		
		Console.WriteLine("\nHeader:\n******");
		header[0] = b;
		Console.WriteLine("Byte 0 = {0:x}",(int)b);
		
		for(int i = 1; i <= 3; ++i)
		{
			header[i] = (byte)fs.ReadByte();
			Console.WriteLine("Byte {0} = {1:x}",i+1,(int)header[i]);
		}
		
		Console.WriteLine("\n\nHeader bei: " +(headerpos-1));
		this.GetHeader(header);
		// 11111111 11111011 10110000 01100100
		// 11111111 11111011 10110000 01100100
		fs.Close();
	}
	
	public void GetHeaderParts(string output)
	{
		this.SyncWord 			= output.Substring(0,12);
		this.MPEG_Version 		= output.Substring(12,1);
		this.MPEG_Layer			= output.Substring(13,2);
		this.ProtectionBit		= output.Substring(15,1);
		this.Bitrate			= output.Substring(16,4);
		this.SamplingFrequency 	= output.Substring(20,2);
		this.PaddingBit			= output.Substring(22,1);
		this.PrivateBit			= output.Substring(23,1);
		this.Mode				= output.Substring(24,2);
		this.ModeExtension		= output.Substring(26,2);
		this.Copyright			= output.Substring(28,1);
		this.OriginalHome		= output.Substring(29,1);
		this.Emphasis			= output.Substring(30,2);
		
//		Console.WriteLine("SyncWord: " + SyncWord + 
//		                  "\nMPEG_Version: "+ MPEG_Version +
//		                  "\nMPEG_Layer: "+ MPEG_Layer +
//		                  "\nProtectionBit:"+ ProtectionBit +
//		                  "\nBitrate: "+ Bitrate);
		
//		Console.WriteLine("Version: "+this.GetMPEG_Version());
//		Console.WriteLine(this.GetMPEG_Layer());
//		Console.WriteLine("CRC-Prüfsumme: "+this.GetProtectionBit());
//		Console.WriteLine(this.GetBitrate()+" kbit/s");
//		Console.WriteLine(this.GetSamplingFrequency()+" Hz");
//		Console.WriteLine("Padding: " +this.GetPaddingBit());
//		Console.WriteLine("Private: " +this.GetPrivateBit());
//		Console.WriteLine("Mode: " +this.GetMode());
//		Console.WriteLine("Copyright: " +this.GetCopyright());
//		Console.WriteLine("Original: " + this.GetOriginalHome());
//		Console.WriteLine("Rauschunterdr.: " +this.GetEmphasis());
		                  
	}
	
	// SyncWord (ungenutzt, ausser bei MPEG 2.5)
	public string GetSyncWord()
	{
		return SyncWord;
	}
	
	// MPEG Version
	public string GetMPEG_Version()
	{
		if(MPEG_Version.Equals("0"))
			return "MPEG 2";
		else
			return "MPEG 1";
	}
	
	// Layer
	public string GetMPEG_Layer()
	{
		if(MPEG_Layer.Equals("00"))
			return "undefiniert";
		else if(MPEG_Layer.Equals("01"))
			return "Layer III";
		else if(MPEG_Layer.Equals("10"))
			return "Layer II";
		else
			return "Layer I";
	}
	
	// CRC Prüfsumme (ja: 16 Bit nach dem Header)
	public string GetProtectionBit()
	{
		if(this.ProtectionBit.Equals("1"))
			return "nein";	// 0: CRC = ja ; 1: CRC = nein
		else
			return "ja";
	}
	
	// Bitrate
	public string GetBitrate()
	{
		if(this.MPEG_Version.Equals("1")) // MPEG 1 ???
		{
			return this.MPEG_1_Bitrate();			
		}
		else							  // MPEG 2 ???
		{
			return this.MPEG_2_Bitrate();
		}
	}
	
	// Sample Frequenz
	public string GetSamplingFrequency()
	{
		if(MPEG_Version.Equals("1"))
		{
			switch(this.SamplingFrequency)
			{
				case "00":	return "44100";
				case "01":	return "48000";
				case "10":  return "32000";
				case "11":	return "-";
				default: return "error";
			}
		}
		else
		{
			switch(this.SamplingFrequency)
			{
				case "00":	return "22050";
				case "01":	return "24000";
				case "10":  return "16000";
				case "11":	return "-";
				default: return "error";
			}
		}
	}
	
	// Padding Bit
	public string GetPaddingBit()
	{
		if(this.PaddingBit.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Private Bit (ungenutzt)
	public string GetPrivateBit()
	{
		if(this.PrivateBit.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Audio Modus
	public string GetMode()
	{
		switch(this.Mode)
		{
			case "00":	return "Stereo";
			case "01":	return "Joint Stereo";
			case "10":	return "Dual-Channel";
			case "11":	return "Mono";
			default:	return "error";
		}
	}
	
//	Nur interessant bei Joint Stereo
//	
//	public string GetModeExtension(string ModeExtension)
//	{
//		
//	}

	// Copyright ja/nein
	public string GetCopyright()
	{
		if(this.Copyright.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Original-Datenstrom
	public string GetOriginalHome()
	{
		if(this.OriginalHome.Equals("1"))
			return "ja";
		else
			return "nein";
	}
	
	// Rauschunterdrückung
	public string GetEmphasis()
	{
		switch(this.Emphasis)
		{
			case "00":	return "keine";
			case "01": 	return "50/15ms";
			case "10":	return "reserviert";
			case "11":	return "CCITT j.17";
			default: 	return "error";
		}
	}
	
	private string MPEG_1_Bitrate()
	{
		if(this.MPEG_Layer.Equals("11")) 		// MPEG 1 Layer I  ???
		{
			return this.Layer1[this.Bitrates()];
		}
		else if(this.MPEG_Layer.Equals("10")) 	// MPEG 1 Layer II ???
		{
			return this.Layer2[this.Bitrates()];
		}
		else									// MPEG 1 Layer III ???
		{
			return this.Layer3_1[this.Bitrates()];
		}
	}
	
	private string MPEG_2_Bitrate()
	{
		if(this.MPEG_Layer.Equals("11")) 		// MPEG 2 Layer I  ???
		{
			return this.Layer1[this.Bitrates()];
		}
		else if(this.MPEG_Layer.Equals("10")) 	// MPEG 2 Layer II ???
		{
			return this.Layer2[this.Bitrates()];
		}
		else									// MPEG 2 Layer III ???
		{
			return this.Layer3_2[this.Bitrates()];
		}
	}
	
	private int Bitrates()
	{
		switch(this.Bitrate)
		{
			case "0000": return 0;
			
			case "0001": return 1;
			
			case "0010": return 2;
			
			case "0011": return 3;
			
			case "0100": return 4;
			
			case "0101": return 5;
			
			case "0110": return 6;
			
			case "0111": return 7;
			
			case "1000": return 8;
			
			case "1001": return 9;
			
			case "1010": return 10;
			
			case "1011": return 11;
			
			case "1100": return 12;
			
			case "1101": return 13;
			 
			case "1110": return 14;
			
			case "1111": return 15;
			
			default: return -1;
					
		}
	}
	

	
	void CountFrames()
	{
		double framelength	= 0;
		double bitrate 		= (Convert.ToDouble(this.GetBitrate()))*1000;	// kbps * 1000
		double frequency 	= (Convert.ToDouble(this.GetSamplingFrequency()));
		double padding 		= Convert.ToDouble(this.PaddingBit);
		
		if(this.GetMPEG_Layer().Equals("Layer I"))
		{
			Console.WriteLine(this.GetMPEG_Layer());
			framelength = (12 * bitrate / frequency + padding) * 4;
			Console.WriteLine("(12 * {0} / {1} + {2}) * 4 = {3}", bitrate, frequency, padding, framelength);
		}
		else
		{
			Console.WriteLine(this.GetMPEG_Layer());
			framelength = 144 * bitrate;
			Console.WriteLine("144 * bitrate = " + framelength);
			framelength = framelength / frequency;
			Console.WriteLine("framelength / frequency = " + framelength);
			framelength = framelength + padding;
			Console.WriteLine("framelength + padding = " + framelength);
			Console.WriteLine("144 * {0} / {1} + {2} = {3}", bitrate, frequency, padding, framelength);
		}
		
		FrameCount = (int)framelength;
		Console.WriteLine("Framelength in Bytes: {0}",(int)framelength);
		//return FrameCount;	
	}
	
	public int GetFrameCount()
	{
		return FrameCount;
	}
	
}


Ist mit Sicherheit nicht die elgenteste Lösung, aber ich hatte mit der Tracklänge nie Probleme. 😁

02.04.2005 - 01:07 Uhr

Klasse. Hätte nicht damit gerechnet, dass dieses Thema doch so viel Anklang findet. 8o Finde es schon mal beruhigend, dass ich damit nicht alleine da stehe.

Das man hier auch mal die "Gegenseite" (Arbeitgeber) hört und dessen Entscheidungskriterien, ist auch super (@Rene Paschold). Ich hatte insgeheim auch immer darauf gehofft, dass ein Auswahlverfahren sich nicht nur nach schulischen Erfolgen richtet. Wir waren schließlich alle mal jung und hatten S*****e im Kopf. 😉

Für mich persönlich ist es nur schwer, da meine Familie(Frau, 2 Töchter) die ganze Zeit während der Ausbildung im Hintergrund standen, "für eine sichere Zukunft", und jetzt die Frage im Raum steht: "Was hat es gebracht?"

Werde diesen Thread auf jeden Fall weiter verfolgen, da ich gespannt bin wie es bei anderen so aussieht...

CU @ll SGT_BOB

02.04.2005 - 00:53 Uhr

Also so wie ich es jetzt habe funktioniert es mit dem links und rechts verschieben.
Leider zeichnet er mir beim Start noch kein Rechteck, obwohl ich dies aufrufe.


using System;
using System.Drawing;
using System.Windows.Forms;


class GraphMDI: Form
{
	Image template = Image.FromFile(@"TileSet_256x768.png");
	
	PictureBox pbox = new PictureBox();
	Graphics g;
	
	Button left = new Button();
	Button right = new Button();
	
	int curPosX = 0;
	int curPosY = 0;
	
	public GraphMDI()
	{
		
		this.AutoScroll = true;
		pbox.Parent = this;
		pbox.Location = new Point(0,0);
		pbox.Size = new Size(template.Size.Width, this.Size.Height);
		pbox.Image = template;
		pbox.SizeMode = PictureBoxSizeMode.AutoSize;
		g = pbox.CreateGraphics();

// Hier sollte doch das erste Rechteck an Pos(0,0) mit Größe(32,32) gezeichnet
// werden, oder nicht???
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		

		left.Parent = this.pbox;
		left.Location = new Point(5,5);
		left.Size = new Size(40,20);
		left.Text = "<-";
		left.Click += new EventHandler(LeftClick);
		
		right.Parent = this.pbox;
		right.Location = new Point(50,5);
		right.Size = new Size(40,20);
		right.Text = "->";
		right.Click += new EventHandler(RightClick);
		
		this.Size = new Size(pbox.Image.Width+30, this.Height);
		Paint += new PaintEventHandler(OnPaint);
	}

	
	void OnPaint(Object obj, PaintEventArgs e)
	{
		Graphics g = e.Graphics;

		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("OnPaint-Methode");
	}

// funktioniert...	
	void LeftClick(object obj, EventArgs ea)
	{
		curPosX -= 32;
		g = pbox.CreateGraphics();
		pbox.Refresh();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
// funktioniert auch...	
	void RightClick(object obj, EventArgs ea)
	{
		curPosX += 32;
		g = pbox.CreateGraphics();
		pbox.Refresh();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
}

Ich weiß daß ich nerve, aber ich würde es gerne verstehen, warum er mir das nicht beim Start schon zeichnet. ?(

Kann das Paint-Ereignis auch noch anders aufgerufen werden (von mir selbst), außer über eine Formveränderung?

Ich hätte da direkt noch eine Frage.
Gegebenenfalls ich möchte genau den aktuellen, mit dem Rechteck gewählten, Ausschnitt des Bildes(z.B.: 64,96,32,32) in die Zwischenablage oder sonst wohin kopieren. Wie würde das gehen, wo soll ich da ansetzen???

Danke nochmal für die bisherige Hilfe und auch schon mal für zukünftige Antworten. 😁

CU @ll SGT_BOB

01.04.2005 - 23:03 Uhr

Hallo Leute.

Ich hab im Februar dieses Jahres meine Ausbildung zum Fachinformatiker Anwendungsentwicklung erfolgreich beendet. Seit dem bin nun schon auf Jobsuche.
(Gegend um Aachen, falls es jemanden interessiert 😄) Nach etlichen Bewerbungen und langer Suche gehen mir die Firmen langsam aus. Ablehnungsgründe waren unter anderem: "Wir suchen nur Informatiker...", "... mindestens 3 Jahre Berufserfahrung...", "Kenntnisse in mindestens 5 Programmiersprachen", usw...

Hallo, Deutschland, ich komme aus der Ausbildung. Als ich anfing hieß es von allen Seiten, toll da machste was mit Zukunft. Wo bitte sind die deutschlandweit ca. 8500 Stellen in der IT-Branche und wer sucht bzw. braucht noch Fachinformatiker.

Kann sein dass ich durch meine lange Arbeitssuche mittlerweile eine sehr negative Einstellung zu dem Ganzen habe. X( Aber ich hab das Gefühl die Verlangen einfach zu viel von jemandem der aus der Ausbildung kommt.

Wie denkt ihr darüber?

01.04.2005 - 22:39 Uhr

Habs mal so versucht, zum mindest so wie ich es verstanden hab. 😁

Leider hat es nicht so ganz funktioniert.

Wenn ich das richtig verstanden habe, zeichnete ich vorher auf dem Image und nicht auf dem PictureBox-Steuerelement, richtig? So das hab ich glaub ich jetzt nicht mehr. Leider aber immer noch mein Problem.


using System;
using System.Drawing;
using System.Windows.Forms;


class GraphMDI: Form
{
	Image template = Image.FromFile(@"TileSet_256x768.png");
	
	PictureBox pbox = new PictureBox();
	Graphics g;
	
	Button left = new Button();
	Button right = new Button();
	
	int curPosX = 0;
	int curPosY = 0;
	
	public GraphMDI()
	{
		
		this.AutoScroll = true;
		pbox.Parent = this;
		pbox.Location = new Point(0,0);
		pbox.Size = new Size(template.Size.Width, this.Size.Height);
		pbox.Image = template;
		pbox.SizeMode = PictureBoxSizeMode.AutoSize;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		
		left.Parent = this.pbox;
		left.Location = new Point(5,5);
		left.Size = new Size(40,20);
		left.Text = "<-";
		left.Click += new EventHandler(LeftClick);
		
		right.Parent = this.pbox;
		right.Location = new Point(50,5);
		right.Size = new Size(40,20);
		right.Text = "->";
		right.Click += new EventHandler(RightClick);
		
		this.Size = new Size(pbox.Image.Width, 300);
		Paint += new PaintEventHandler(OnPaint);
	}
	
	void OnPaint(Object obj, PaintEventArgs e)
	{
		Graphics g = e.Graphics;
		pbox.Refresh();
		//g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("OnPaint-Methode");
	}
	
	void LeftClick(object obj, EventArgs ea)
	{
		curPosX -= 32;
		g = pbox.CreateGraphics();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
	
	void RightClick(object obj, EventArgs ea)
	{
		curPosX += 32;
		g = pbox.CreateGraphics();
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
}

Bei dem Vorschlag von Pulpaplex kommt es doch meiner Meinung nach aufs Selbe raus.
Ich erstelle mir eine Klasse die von PictureBox abgeleitet wird und überschreibe deren Methode "OnPaint()". Dann erstelle ich mir eine Instanz in meiner Hauptform und greife dann auf diese zu.

Oh man, entweder hab ich im moment zu wenig schlaf oder ich hab einfach nur ein Brett vorm Kopf. X(

Vielleicht kann sich noch mal jemand die Arbeit machen mir zu helfen und es genauer erklären. Eigentlich bin ich nicht mehr des blutige Anfänger, hab aber schon seit einiger Zeit nicht mehr viel getan.

Pleaze help !!!

CU @ll SGT_BOB

01.04.2005 - 20:05 Uhr

Hey, erst mal danke.

Das sieht doch schon ganz gut aus und vor allem verständlich 😉. Ich werds gleich mal probieren.

Danke schön.

CU @ll SGT_BOB

01.04.2005 - 15:53 Uhr

Erst mal Danke für die schnellen Antworten.

@Pulpapex:

Ich erklär glaub ich erst mal worauf das ganze hinauslaufen soll. Ich möchte aus Grafiken Tiles ausschneiden. Momentan sollen die 32x32 Pixel groß sein.

Also hab ich mir gedacht, nimmste ne PictureBox und packst das Image da rein.
Das gezeichnete Rechteck soll einfach nur zur Auswahl des zukünftigen Tiles sein.

Heißt das jetzt ich soll auf dem Image zeichnen oder auf der PictureBox. wenn ich auf der PictureBox zeichne, dann seh ich das Rechteck nicht.
Hab jetzt den Refresh bzw. das Update für die PictureBox ausgeführt, nicht mehr für die Form. Problem bleibt trotzdem bestehen.
Bin in Sachen GDI+ leider absoluter Neuling, weiß also leider nicht ganz wo drauf du hinaus willst. 🙁

Vielleicht kannst du etwas genauer werden, wenns nicht zu viel verlangt ist.

CU @ll SGT_BOB

01.04.2005 - 14:44 Uhr

@Matrix-NTN:

Mach dir nix draus, ich hab dieses Fettnäpchen auch mitgenommen. Wer lesen kann ist klar im Vorteil. 😁

Aufklärung des ganzen SPASS !!!

War aber auch richtig fies 😜

Aber trotzdem Super durchgezogen 👍

01.04.2005 - 14:39 Uhr

Bei #Develop

  1. Projekt --> Projektoptionen...

  2. Auf Konfiguration klicken

  3. Debug oder Release auswählen (für deine Zwecke vermutlich Debug)

  4. Ausgabe anklicken

  5. Bei Ausgabetyp "WinExe" auswählen

  6. mit OK bestätigen

  7. freuen 😁

01.04.2005 - 12:50 Uhr

Hallo Leute.

Ich hab folgendes Problem.

Ich hab eine PictureBox in der ein Bild geladen wird. Ein 32x32 großes Rechteck wird darauf gezeichnet. Dieses soll (momentan mit zwei "häßlichen" Buttons 😉) auf dem Bild "verschoben" werden. Es soll also immer 32 Pixel nach rechts oder links wandern. Funzt auch soweit.

ABER die "alten" Rechtecke werden nicht gelöscht. Warum??? Refresh???

Hier mal der Quellcode in dem ich grad herumexperimentier:


class GraphMDI: Form
{
	Image template = Image.FromFile(@"TileSet_256x768.png");
	
	PictureBox pbox = new PictureBox();
	Graphics g;
	
	Button left = new Button();
	Button right = new Button();
	
	int curPosX = 0;
	int curPosY = 0;
	
	public GraphMDI()
	{
		
		this.AutoScroll = true;
		pbox.Parent = this;
		pbox.Location = new Point(0,0);
		pbox.Size = new Size(template.Size.Width, this.Size.Height);
		pbox.Image = template;
		pbox.SizeMode = PictureBoxSizeMode.AutoSize;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		
		left.Parent = this.pbox;
		left.Location = new Point(5,5);
		left.Size = new Size(40,20);
		left.Text = "<-";
		left.Click += new EventHandler(LeftClick);
		
		right.Parent = this.pbox;
		right.Location = new Point(50,5);
		right.Size = new Size(40,20);
		right.Text = "->";
		right.Click += new EventHandler(RightClick);
		
		this.Size = new Size(pbox.Image.Width, 300);
		Paint += new PaintEventHandler(OnPaint);
	}
	
	void OnPaint(Object obj, PaintEventArgs e)
	{
		Graphics g = e.Graphics;
		g.DrawImage(template, 0,0);
		this.Update();
		//g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		Console.WriteLine("OnPaint-Methode");
	}
	
	void LeftClick(object obj, EventArgs ea)
	{
		curPosX -= 32;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		this.Refresh();
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
	
	void RightClick(object obj, EventArgs ea)
	{
		curPosX += 32;
		g = Graphics.FromImage(template);
		g.DrawRectangle(Pens.Red, curPosX,curPosY,32,32);
		
		this.Refresh();
		Console.WriteLine("curPosX = " + curPosX+ "curPosY = " + curPosY);
	}
}


Danke schon mal für die Antworten. 😁

CU @ll SGT_BOB

01.04.2005 - 02:32 Uhr

OK, jetzt hab auch ich es geschnallt. Hätte ich mal auf die Uhr geschaut und nach dem Datum gesehen, würd ich jetzt nicht so blöd dastehen. 😁**
War aber ein tolles Ding... 👍

Mich jedenfalls habt ihr gut drangekriegt. 😉**

01.04.2005 - 02:18 Uhr

Wollte grade loslegen... 🙁

Wo soll ich denn bitte meine "totgeborenen" Fragen zu C# jetzt loswerden? 🙄

Ist das wegen meinem Lob gestern??? 😁

Naja, Java hab ich schon hinter mir, im Praktikum. C# gefällt mir besser und wird meiner Meinung nach auch eine Zukunft haben. Es gibt immer noch (sehr) viele Win User und die folgenden Windows Versionen werden auf der .Net Technologie aufbauen. Dadurch wird C# auch weiterhin gebraucht werden.
Java ist mit Sicherheit ein gut durchdachtes und durchgearbeitetes Konzept und wird auch deshalb weiter sehr viel Anklang finden. Aus diesem Grund kann ich euer Handeln teilweise verstehen.

Aber warum fahrt ihr nicht "zweigleisig" weiter. Ich kenne euren persönlichen Hintergründe für diese Entscheidung nicht, aber ihr könntet doch die Community einfach um Java erweitern, da beide Konzepte doch vom Grundsatz her sehr ähnlich aufgebaut sind.

Trotz alle dem, viel Glück auf eurem neuen Weg.

CU @ll SGT_BOB

EDIT: Ups... sollte eigentlich eine Antwort werden und kein neuer Thread. Sorry. 8o

31.03.2005 - 02:01 Uhr

Hallo Leute.

Ich muss jetzt einfach mal ein dickes Lob an das Forum loswerden.

Hab schon so manches Problem gehabt (wer nicht? 😄) und (fast) immer einen Lösungsansatz hier gefunden.

Alle Achtung, nur weiter so... 👍

CU @ll

SGT_BOB

11.03.2005 - 10:51 Uhr

Erst mal Danke für die Antworten.

Also kann ich die Klassen der 2er Version benutzen. Was halt fehlt ist eine Liste der Eigenschaften bzw. Methoden einer Instanz. (Beispiel: this.Size, oder so)

Gibt es denn zum Visual C# 2005 Express beta noch alternative Downloadmöglichkeiten, als bei MS selber. Hatte da nämlich nicht so viel Erfolg.

CU @ll

10.03.2005 - 22:44 Uhr

Hallo Leute.

Erst mal Lob an euch für dieses gelungene Forum. Da dies mein erstes Posting ist, hoffe ich es ist hier richtig.

Mein Problem:

Ich hab mir gestern (endlich) das .NET SDK 2.0 Beta runtergeladen und auch gleich installiert. Als IDE benutze ich #develop v1.0.3 .
Ich kann leider über die using-Direktive die neuen Namespaces nicht ansprechen. Funktionieren tun Sie. Z.B. kann ein ToolStrip auf meiner Form benutzen, usw...

Warum zeigt er mir die Namespaces bzw. die entsprechenden Klassen nicht an???

Wenn ich irgendwelche Begriffe verwechselt haben sollte, liegt das an meiner längeren "C# Pause"... Also bitte nicht böse sein... 😁

Danke schon mal im voraus