Autor Beitrag
K_one
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 01.06.10 16:31 
Hallo!

Ich möchte ein Programm schreiben, mit dem man geometrische Figuren zeichnen kann. Genau genommen soll es eine Hilfestellung für die Konstruktion sein (so, als würde man es auf dem Papier zeichen) und muss Punkte, Geraden und Kegelschnitte in allen möglichen Lagen darstellen können.

Ich hab mich für C# entschieden (und nicht für Java, was eine schwere Entscheidung war) und habe leider wenig Ahnung von 2D-Darstellungen (also absolut keine 3D-Darstellung!). Das Programm sollte im Grunde ähnlich wie GeoGebra aussehen. Wie stelle ich nun die "Zeichnung" dar? Soll ich DirectX oder XNA verwenden? Oder gibt es dafür bessere Lösungen?

Bedanke mich schon im Vorhinein für Antworten, Vorschläge und Hilfestellungen!

MfG Martin
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 01.06.10 18:30 
:welcome:

Für GeoGebra-Verhältnisse ist System.Drawing vollkommen ausreichend. Eine Einführung findest du zum Beispiel hier: openbook.galileocomp...al_csharp_17_001.htm

_________________
>λ=
K_one Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 01.06.10 21:12 
Hi!

Danke! Dann werd ich mich mal damit befassen!
Wenns Probleme gibt werde ich hier posten!

lg Martin
K_one Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 02.06.10 00:27 
Hallo!

Ich stoße gerade auf mein erstes Problem:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
public partial class DG : Form
    {
        private Bitmap mybtm;
        private Graphics myg;

        public DG()
        {
            InitializeComponent();
        }

        private void draw()
        {
            mybtm = new Bitmap(_widthpx, _heigthpx);
            myg = Graphics.FromImage(mybtm);
            //...... ca. 20 Zeilen Code
            myg.DrawLine(Pens.Black, new Point(020), new Point(2050));
            myg.DrawLine(Pens.Black, new Point(200), new Point(5020));
            pbaxes.Image = mybtm; //pbaxes ist eine PictureBox
            myg.Dispose();
        }
    }

Es fehlt jetzt einiges an Code, aber das Wesentliche ist da.
draw() wird ziemlich oft aufgerufen und irgendwie sind meine 4 GB RAM nach kürzester Zeit voll und das Programm gibt mir eine Fehlermeldung, weil es kein neues Bitmap instanzieren kann.
Was mache ich falsch? Warum füllt sich mein RAM?

lg Martin
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 02.06.10 09:13 
Das hatten wir im Forum schonmal. Du musst das image von pbaxes zuerst disposen bevor du das neue zuweist.

Gruß

Für diesen Beitrag haben gedankt: K_one
K_one Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 22.06.10 18:45 
Hi!

Stehe vor meinem nächsten Problem:
Wie realisiere ich, dass Punkte auf meiner Zeichenfläche auf Mouseover (also bei Mouseover fett werden und dann beim Klick ausgewählt werden) reagieren?
Sollte ich eine art Tabelle erstellen, in der immer nachgeprüft wird, ob der Cursor in der Nähe von Punkten ist? Oder gibt es dafür effektivere Lösungen?

Danke! lg
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 22.06.10 21:03 
Glaube nicht, dass es je zum Flaschenhals wird, die Punkte einfach nacheinander durchzugehen ;) .

_________________
>λ=