Hallo, ich habe nach einiger Zeit geschafft mit den verschiedenen VS Express Versionen klarzukommen und meine ersten Schritte mit DirectX gemacht. Nun habe ich folgendes Problem:
private void ClearWindow() { m_Device.Clear(ClearFlags.Target, Color.LightGray, 0.0f, 0); }
private void MaleHorizontaleLinien() { CustomVertex.TransformedColored vertex = new CustomVertex.TransformedColored[20]; //10 Linien malen for (int i = 0; i < 10; i++) { y = 50 + i * 10; //für Linie 1: i=0: Index 0 und 1;;; für Linie 2: i=1: Index 2 und 3 usw. vertex[i * 2].Position = new Vector4(10, y, 0, 0f); vertex[i * 2].Color = Color.Black.ToArgb(); vertex[i * 2 + 1].Position = new Vector4(100, y, 0, 0f); vertex[i * 2 + 1].Color = Color.Black.ToArgb(); } MalEs(vertex); }
private void MaleVertikaleLinien() { CustomVertex.TransformedColored vertex = new CustomVertex.TransformedColored[20]; //10 Linien malen for (int i = 0; i < 10; i++) { x = 50 + i * 10; //für Linie 1: i=0: Index 0 und 1;;; für Linie 2: i=1: Index 2 und 3 usw. vertex[i * 2].Position = new Vector4(x, 10, 0, 0f); vertex[i * 2].Color = Color.Black.ToArgb(); vertex[i * 2 + 1].Position = new Vector4(x, 100, 0, 0f); vertex[i * 2 + 1].Color = Color.Black.ToArgb(); } MalEs(vertex); }
private void MalEs(CustomVertex.TransformedColored[] v) { m_Device.BeginScene(); m_Device.VertexFormat = CustomVertex.TransformedColored.Format; m_Device.DrawUserPrimitives(PrimitiveType.LineList, 10, v); m_Device.EndScene(); m_Device.Present(); }
protected override void OnPaint(PaintEventArgs e) { ClearWindow(); MaleHorizontaleLinien(); MaleVertikaleLinien(); this.Invalidate(); //directx resize issue } Im Konstruktor habe ich noch das geschrieben: this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true); //directx resize issue
Nun flackert das Ganze leider. Ich vermute das er das zweimal ausführen von MalEs nicht mag. Aber ich würde gerne verschiedene Elemente malen ohne sie alle in ein einziges Vertex-Array schreiben zu müssen. Gibt es da eine elegante Möglichkeit? Nochmal zum Verständnis was ich möchte: Später soll in MaleHorizontaleLinien und in MaleVertikaleLinien und evtl. in weiteren Methoden mehrere verschiedene Dinge gemalt werden. Wenn ich dafür ein Array benutze und alles in eine Methode packe, wird es mir zu unübersichtlich. Die einzelnen Methoden sollen also erhalten bleiben.
Vielen Dank schonmal für Tips. |