Laden...

Profil von (8(|)

myCSharp.de - Member Mitglied seit
(
(8(|)
myCSharp.de - Member
6
Themen
39
Beiträge
Dabei seit
06.08.2005
Letzte Aktivität
vor 18 Jahren
Herkunft
Hamm
Erstellt vor 20 Jahren

c# ist kein marketing, c# ist eine programmiersprache für das .NET framework, welches eine gemeinsame klassenbibliothek für einen ganzen haufen von programmiersprachen bietet.

es ist eine neue programmiersprache, die , wie hier schon beschrieben, andere einsatzfelder hat als c++. z.b. wird c++ nicht so oft in kritischen bereichen z.b. banken verwendet, weil es zu unsicher ist. dort kann man c# gut einsetze, im moment wird aber noch sehr viel mit java gemacht.

c# basiert auf c++. ob es jetzt besser ist als c++, kann man nicht sagen. es ist in manchen bereichen geeigneter, in anderen wiederum nicht.

Erstellt vor 20 Jahren

salve

ich möchte ein wenig in die materie der grafikprogrammierung mittels directx eintauchen, habe mir dazu das directX SDK besorgt. desweiteren habe ich mich auch durch das directx tutorial von hauptmann durchgeschlagen, bis zu dem punkt , an dem matrizen behandelt werden, also gezeichnete objekte quasi gedreht werden.

in dem sdk tutorial 1 wurde ein fenster mit blauem grund erzeugt und un tutorial 2 ein dreieck gezeichnet.
schön und gut, habeich hinbekommen und kann es auch einigermaßen nachvollziehen.
doch wenn es um bewegung geht, komme ich nicht mehr weiter. leider beschreiben das sdk tutorial und hauptmanns es für mich nicht leicht genug.

vor allem der sprung von teil 2 zu 3 ist schwer.
hier einmal der code aus dem 2ten teil, der ein dreieck rendert:


//-----------------------------------------------------------------------------
// File: Vertices.cs
//
// Desc: In this tutorial, we are rendering some vertices. This introduces the
//       concept of the vertex buffer, a Direct3D object used to store
//       vertices. Vertices can be defined any way we want by defining a
//       custom structure and a custom FVF (flexible vertex format). In this
//       tutorial, we are using vertices that are transformed (meaning they
//       are already in 2D window coordinates) and lit (meaning we are not
//       using Direct3D lighting, but are supplying our own colors).
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

namespace VerticesTutorial
{
	public class Vertices : Form
	{
		// Our global variables for this project
		Device device = null; // Our rendering device
		VertexBuffer vertexBuffer = null;

		public Vertices()
		{
			// Set the initial size of our form
			this.ClientSize = new System.Drawing.Size(300,300);
			// And its caption
			this.Text = "Direct3D Tutorial 2 - Vertices";
		}
		
		public bool InitializeGraphics()
		{
			try
			{
				// Now let's setup our D3D stuff
				PresentParameters presentParams = new PresentParameters();
				presentParams.Windowed=true;
				presentParams.SwapEffect = SwapEffect.Discard;
				device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
				this.OnCreateDevice(device, null);
				return true;
			}
			catch (DirectXException)
            { 
                return false; 
            }
		}

		public void OnCreateDevice(object sender, EventArgs e)
		{
			Device dev = (Device)sender;
			// Now Create the VB
			vertexBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColored), 3, dev, 0, CustomVertex.TransformedColored.Format, Pool.Default);
			vertexBuffer.Created += new System.EventHandler(this.OnCreateVertexBuffer);
			this.OnCreateVertexBuffer(vertexBuffer, null);
		}
		public void OnCreateVertexBuffer(object sender, EventArgs e)
		{
			VertexBuffer vb = (VertexBuffer)sender;
			GraphicsStream stm = vb.Lock(0, 0, 0);
			CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];

			verts[0].X=150;verts[0].Y=50;verts[0].Z=0.5f; verts[0].Rhw=1; verts[0].Color = System.Drawing.Color.Aqua.ToArgb();
			verts[1].X=250;verts[1].Y=250;verts[1].Z=0.5f; verts[1].Rhw=1; verts[1].Color = System.Drawing.Color.Brown.ToArgb();
			verts[2].X=50;verts[2].Y=250;verts[2].Z=0.5f; verts[2].Rhw=1; verts[2].Color = System.Drawing.Color.LightPink.ToArgb();
			stm.Write(verts);
			vb.Unlock();
		}
		private void Render()
		{
			if (device == null) 
				return;

			//Clear the backbuffer to a blue color (ARGB = 000000ff)
			device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0);
			//Begin the scene
			device.BeginScene();
			
			device.SetStreamSource( 0, vertexBuffer, 0);
			device.VertexFormat = CustomVertex.TransformedColored.Format;
			device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1);
			//End the scene
			device.EndScene();
			device.Present();
		}
		protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
		{
			this.Render(); // Render on painting
		}
		protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
		{
			if ((int)(byte)e.KeyChar == (int)System.Windows.Forms.Keys.Escape)
				this.Close(); // Esc was pressed
		}

		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		static void Main() 
		{

            using (Vertices frm = new Vertices())
            {
                if (!frm.InitializeGraphics()) // Initialize Direct3D
                {
                    MessageBox.Show("Could not initialize Direct3D.  This tutorial will exit.");
                    return;
                }
                frm.Show();

                // While the form is still valid, render and process messages
                while(frm.Created)
                {
                    frm.Render();
                    Application.DoEvents();
                }
            }
		}

	}
}

im 3. teil gibt es jetzt aber einige änderungen, die ich nicht auf die reihe kriege. transformedcolored und positioncolored verstehe ich noch. woran es aber hapert sind z.b. die verts.


			verts[0].X=-1.0f; verts[0].Y=-1.0f; verts[0].Z=0.0f; verts[0].Color = System.Drawing.Color.DarkGoldenrod.ToArgb();
			verts[1].X=1.0f; verts[1].Y=-1.0f ;verts[1].Z=0.0f; verts[1].Color = System.Drawing.Color.MediumOrchid.ToArgb();
			verts[2].X=0.0f; verts[2].Y=1.0f; verts[2].Z = 0.0f; verts[2].Color = System.Drawing.Color.Cornsilk.ToArgb();

wieso sind das hier so kleine koordinaten, und nicht wie im teil davor z.b. 150 oder so und was soll das f dahinter. ic glaube das heisst float, aber kann man sich das nicht sparen ?

so das war eine neureung, jetzt die andere. bevor man rendert, wird die funktion SetupMatrices() aufgerufen, die glaube ich dafür sorgt, dass sich das objekt scheinbar dreht. dreht sich eigentlich das objekt oder dreht sich die kamera ?



			int  iTime  = Environment.TickCount % 1000;
			float fAngle = iTime * (2.0f * (float)Math.PI) / 1000.0f;
			device.Transform.World = Matrix.RotationY( fAngle );

			device.Transform.View = Matrix.LookAtLH( new Vector3( 0.0f,                3.0f,-5.0f ), new Vector3( 0.0f, 0.0f, 0.0f ), new Vector3( 0.0f, 1.0f, 0.0f ) );
			
device.Transform.Projection = Matrix.PerspectiveFovLH( (float)Math.PI / 4, 1.0f, 1.0f, 100.0f );

also da versteh ich ja garnichts mehr. wo ist denn da irgendwo eine funktion, die das bild alle x sekunden dreht ?

und ich verstehe eigentlich die komplette funktion nicht.

vielleicht könnt ihr ja ein wenig licht ins dunkle bringen.

danke im vorraus

mfg
(8(|)

Erstellt vor 20 Jahren

du musst am ende des programms seinen tcplistener zumachen:
t.stop();

(8(|)

Erstellt vor 20 Jahren

System.Text.Encoding.Default sollte das richtige sein

Gruß
(8(|)

Erstellt vor 20 Jahren

Hi

also du machst pro form ja eine klasse, sprich eine datei.
einmal deine mainform
und deine form, an die die parameter übergben willst.

die parameterform sieht dann ungefähr so aus


class MeineForm
{
   private string parameterKopie;
   public MeineForm(string parameter) //KOnstruktur
  {
      parameterKopie=parameter;
  }
}

von deiner hauptform, übergibst du den parameter im konstruktor:


MeineForm meineForm1 = new MeineForm("STRING-TANGA");
meineForm1.Show();

feddich

(8(|)

Erstellt vor 20 Jahren

hm also wenn ich die objekte mithilfe von Items.Add() hinzufüge, stehen in der listbox die instanznamen. ich möchte aber, dass dort eine string variable des objekts steht, und wenn man dadrauf klickt, auf andre variablen des objekts zugreifen kann.

mfg (8(|)

Erstellt vor 20 Jahren

huhudele

also zu meinem problemchen:
ich habe eine klasse NewsFeed, welche eine ArrayList mit lauter objekten von NewsEintrag enthält. ( es handelt sich um rss reader ). die klasse newseintrag enthält string variablen u.a. den Titel des NewsEintrags und die url.
ich befülle nun die listbox mit titeln der newseinträge. ich möchte es nun erreichen, dass , wenn ich auf einen eintrag in der liste klicke, ich auf die url variable des pbjektes zugreifen kann.
wie bewerkstellige ich das?
danke für eure hilfe

mfg (8(|)

Erstellt vor 20 Jahren

ja schon klar aber das komische ist, dass ich die heise datei garnicht auslesen kann. //item z.b. funktioniert nicht.

aber ich sehe bei den dateien gar keinen großen unterschied 🙁

mfg (8(|)

Erstellt vor 20 Jahren

hi leute,

ich habe den entschluss gefasst, meinen horizont ein wenig zu erweitern und wollte erstmal einen simplen rss reader schreiben.
es ist mir soweit auch geglückt mit folgendem code, alle titel vom winfuture.de rss feed zu holen:
http://www.media-designs.de/winfuture.rdf


			XmlNodeList nl = xmlread.SelectNodes("//item/title");
			foreach(XmlNode n in nl)
			{
				textBox1.Text+=n.InnerText + "\r\n";

klappt perfekt. nur wenn ich jetzt den RSS feed von heise.de auslesen will
http://www.heise.de/newsticker/heise.rdf
bleibt meine textbox leer.
woran liegt das ?

danke

10 von 39 Beiträgen