Autor Beitrag
LordBen
Hält's aus hier
Beiträge: 8

Windoof XP
Visual C# 2008 Express, XNA GameStudios 3.1, BlitzBasic 3D
BeitragVerfasst: Sa 10.04.10 08:41 
hi leute,
ich bin mir nicht ganz sicher ob das in den Grafik-thread gehört (falls nicht bitte verschieben)

also: bei einer normalen windows-forms anwendung liegt der "Koordinaten"Ursprung, also der Pukt 0,0 oben links im Fenster.
Meine Frage: kann man diesen punkt verschieben? Ich schreibe gerade eine App um Funktionen (linear und quadratisch) zeichnen zu lassen (also man giebt werte ein und c# berechnet und zeichnet diesen graphen dann). Dafür währe es wesentlich leichter wenn ich sage das beim punkt 255,255 (z.b.) der koordinatenursprung liegt, und alles was größer als 255,255 ist ist dann positiv und alles was kleiner ist demzufolge negativ, also quasi wie in Mathe ;-). Es gäbe ja die Möglichkeit den graphen so zeichnen zu lassen das er in der Mitte liegt, aber das Problem ist ja das er dann quasi falschrum ist, weil er ja im II Quadranten liegt...
ich hoffe ich habe mich nicht zu kompliziert ausgedrückt.

vielen Dank schon mal für die Hilfe

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

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 10.04.10 11:54 
user profile iconLordBen hat folgendes geschrieben Zum zitierten Posting springen:
ich bin mir nicht ganz sicher ob das in den Grafik-thread gehört
Da es ja vor allem um System.Drawing geht, passt das schon :) .

user profile iconLordBen hat folgendes geschrieben Zum zitierten Posting springen:
Meine Frage: kann man diesen punkt verschieben?
Du könntest alle Operationen natürlich leicht selbst von einem Koordinatensystem ins andere umrechnen lassen, aber das kannst du auch die Graphics-Klasse erledigen lassen ;) .
ausblenden C#-Quelltext
1:
2:
g.ScaleTransform(1, -1); // y-Achse umkehren
g.TranslateTransform(255255);


user profile iconLordBen hat folgendes geschrieben Zum zitierten Posting springen:
und alles was größer als 255,255 ist ist dann positiv
Jetzt bin ich aber gespannt, wie du eine "Größer"-Relation bei Punkten definieren willst :D .

_________________
>λ=
LordBen Threadstarter
Hält's aus hier
Beiträge: 8

Windoof XP
Visual C# 2008 Express, XNA GameStudios 3.1, BlitzBasic 3D
BeitragVerfasst: Sa 10.04.10 12:21 
hej, das is (theoretisch) genau das was ich gesucht habe. leider kann ichs noch nicht ausprobieren, weil ich nicht so genau weiß was du mit g. meinst. :oops:

EDIT: ok, das mit dem g. hat sich schon geklärt :autsch:
aber nun eine zweite frage: ich jasse jetzt eine linie zeichnen, aber es ist nichts zu sehen. Könnte das unter umständen am splitcontainer liegen den ich mit drinnen habe?
hier mal der Code:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Funktionsberechnung
{
    public partial class Linear : Form
    {
        public Linear()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Hilfe help = new Hilfe();
            help.Show();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            decimal pm = mNum.Value;
            decimal pn = nNum.Value;
            int ver = 250;
            decimal start;
            decimal end;
            start = (pm * 100 + pn);
            end =  (pm * 200 + pn);
            int st = Convert.ToInt16(start);
            int en = Convert.ToInt16(end);
            Graphics line = this.CreateGraphics();
            line.DrawLine(new Pen(Brushes.Black), st,100, en, 200);
        }
    }
}


Da kommen sind dann noch ein paar andere Fenster dabei, unter anderem auch das hilfe-fenster, aber da diese form nicht auf die anderen zugreift, oder umgekehrt, sind die hier ja nicht von belang.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 10.04.10 15:03 
Du musst natürlich auf jeden Fall auf einem Control im Vordergrund zeichnen. Und zwar in dessen Paint-Event über e.Graphics, sonst ist spätestens beim Verschieben wieder alles weg. Im Click-Handler rufst du dann nur noch control.Invalidate auf.

PS: Zum Zeichnen rechnest du am besten ausschließlich mit float.

_________________
>λ=
LordBen Threadstarter
Hält's aus hier
Beiträge: 8

Windoof XP
Visual C# 2008 Express, XNA GameStudios 3.1, BlitzBasic 3D
BeitragVerfasst: Sa 10.04.10 19:34 
ok, das mit dem neuen control hab ich gemacht. ich habs erst direkt mit der Splitbox im Paintevent versucht dann mit ner Picturebox. es hat aber beide male nicht geklappt. und Control.invalidate ging auch nicht...
Sorry, bin ziemlicher einsteiger...desshalb die fragen...

Edit: kann man einen NummericUpDown auch mit kommazahlen machen?? oder gibt es etwas ähnliches wo das geht?? wichtig sind nämlich die Pfeile mit denen man die zahlen verändern kann...
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: So 11.04.10 10:38 
Das NumericUp-DownControl hat die Eigenschaft DecimalPlaces (siehe MSDN oder die Eigenschaftauswahl von VS). Mit dieser kannst du bestimmen wieviele Nachkommastellen benutzt werden können.

Gruß
LordBen Threadstarter
Hält's aus hier
Beiträge: 8

Windoof XP
Visual C# 2008 Express, XNA GameStudios 3.1, BlitzBasic 3D
BeitragVerfasst: Mo 12.04.10 15:03 
ahhh...ok schau ich mir mal an...sitz grad in der schule :lol:
und wie ist das mit dem zeichnen??