Visual C++ Frage ..

04/01/2011 04:27 Mozo_#1
Hallo,

ich habe eine Frage..
Undzwar muss ich in C++ ein koordinatensystem auswerten und die punkte auf einem Bild zeichnen lassen.

Nur komme ich nicht darauf, wie ich dies berechnen soll.

Die Achse:

[Only registered and activated users can see links. Click Here To Register...]

Die werte gehen im plus bzw minus bereich bis zu 4000.

Nun brauche ich wie gesagt eine berechnung wie ich die positionen herausbekomme wo ich dies auf dem Bild zeichne.


Ich hoffe mir kann jemand helfen.

Danke im vorraus ;)
04/01/2011 09:37 pachen123321#2
position_X=bildschirmauflösung_X / 4000 * wert_x
position_y=Bildschirmauflösung_y / 4000 * wert_y

have fun
04/02/2011 19:09 Mozo_#3
Danke aber das Problem bei dieser rechnung ist, wenn ich einen punkt habe der im y bereich im minus ist, bekomme ich ein negatives ergebniss und bin somit ausserhalb des fensters.
04/02/2011 19:21 MoepMeep#4
Umrechnung weltkoordinaten -> screenkoordinaten. Wirste genug zu im internet finden.
04/02/2011 19:25 MrSimonKeks#5
Edit: O.o habe grad bemerkt das, das auf Graphischer Ebene irrelevant ist...
04/02/2011 20:14 Mozo_#6
@MoepMeep,

entweder bin ich echt zu blöd zum googlen oder so aber ich finde nichts für mich hilfreiches =/
04/03/2011 16:42 xNopex#7
position_X = ( bildschirmauflösung_X / 2 ) + ( (bildschirmauflösung_X / 2) / 4000 ) * wert_x
position_y = ( bildschirmauflösung_Y / 2 ) + ( (bildschirmauflösung_Y / 2) / 4000 ) * wert_y
04/03/2011 17:11 1337syn#8
du gehst einfach bis 8000.
Du kannst bei der App ja keine negativen Koordinaten angeben. Du machst einfach bei 4000 die Nullachse. Und für Ausgaben einfach -4000 rechnen.
04/03/2011 23:35 Mozo_#9
Okay, das mit der berechnung habe ich nun fertig.

Nun wollte ich aber die einzelnen punkte via Array auf dem bildschirm zeichnen lassen:

PHP Code:
ShowWindow(hWndnCmdShow);
   
UpdateWindow(hWnd);
   
HDC hBitmapdchWindowdc;
   
HBITMAP hOld;
   
PAINTSTRUCT ps;
   
RECT rectangle[64];
   
hWindowdc BeginPaint(hWnd, &ps);
   
hWindowdc GetDC(hWnd); 

   for (const 
int i 1<= 11)
   {
       
RECT rectangle[i];
              
HBRUSH hBrush;
              
rectangle[i].left 5;
              
rectangle[i].top 5;
              
rectangle[i].bottom rectangle[i].top 5;
              
rectangle[i].right rectangle[i].left 5;
              
hBrush CreateSolidBrush(RGB(255,0,0)) ;
              
FillRect (hWindowdc, &rectangle[i], hBrush) ;
   }
   
EndPaint(hWnd, &ps); 
wenn ich das ganze ohne Arrays mache funktioniert das wunderbar, da ich aber keine lust habe mir für jeden Punkt alles neu zu schreiben, würde ich lieber diese methode benutzen, nur funktioniert das auf diese weise nicht so wirklich, hoffe mir kann jemand helfen .

Danke im vorraus ;)
04/03/2011 23:40 MoepMeep#10
Quote:
Originally Posted by Mozo_ View Post
Okay, das mit der berechnung habe ich nun fertig.

Nun wollte ich aber die einzelnen punkte via Array auf dem bildschirm zeichnen lassen:

PHP Code:
ShowWindow(hWndnCmdShow);
   
UpdateWindow(hWnd);
   
HDC hBitmapdchWindowdc;
   
HBITMAP hOld;
   
PAINTSTRUCT ps;
   
RECT rectangle[64];
   
hWindowdc BeginPaint(hWnd, &ps);
   
hWindowdc GetDC(hWnd); 

   for (const 
int i 1<= 11)
   {
       
RECT rectangle[i];
              
HBRUSH hBrush;
              
rectangle[i].left 5;
              
rectangle[i].top 5;
              
rectangle[i].bottom rectangle[i].top 5;
              
rectangle[i].right rectangle[i].left 5;
              
hBrush CreateSolidBrush(RGB(255,0,0)) ;
              
FillRect (hWindowdc, &rectangle[i], hBrush) ;
   }
   
EndPaint(hWnd, &ps); 
wenn ich das ganze ohne Arrays mache funktioniert das wunderbar, da ich aber keine lust habe mir für jeden Punkt alles neu zu schreiben, würde ich lieber diese methode benutzen, nur funktioniert das auf diese weise nicht so wirklich, hoffe mir kann jemand helfen .

Danke im vorraus ;)
Informier dich erstmal, was arrays sind.
04/04/2011 00:07 Mozo_#11
@MoepMeep,
das du alles kannst und nichts hilfreiches postest, weiß ich mittlerweile

Nunja hab es nun gelöst:
PHP Code:
ShowWindow(hWndnCmdShow);
   
UpdateWindow(hWnd);
   
HDC hBitmapdchWindowdc;
   
HBITMAP hOld;
   
PAINTSTRUCT ps;
   
RECT *rectangle = new RECT[64];
   
hWindowdc BeginPaint(hWnd, &ps);
   
hWindowdc GetDC(hWnd); 

   for (
int i 1<= 64i++)
   {
              
HBRUSH hBrush;
              
rectangle[i].left 5;
              
rectangle[i].top 5;
              
rectangle[i].bottom rectangle[i].top 5;
              
rectangle[i].right rectangle[i].left 5;
              
hBrush CreateSolidBrush(RGB(255,0,0)) ;
              
FillRect (hWindowdc, &rectangle[i], hBrush) ;
   }
   
EndPaint(hWnd, &ps); 
04/04/2011 13:33 MoepMeep#12
Quote:
Originally Posted by Mozo_ View Post
@MoepMeep,
das du alles kannst und nichts hilfreiches postest, weiß ich mittlerweile

Nunja hab es nun gelöst:
PHP Code:
ShowWindow(hWndnCmdShow);
   
UpdateWindow(hWnd);
   
HDC hBitmapdchWindowdc;
   
HBITMAP hOld;
   
PAINTSTRUCT ps;
   
RECT *rectangle = new RECT[64];
   
hWindowdc BeginPaint(hWnd, &ps);
   
hWindowdc GetDC(hWnd); 

   for (
int i 1<= 64i++)
   {
              
HBRUSH hBrush;
              
rectangle[i].left 5;
              
rectangle[i].top 5;
              
rectangle[i].bottom rectangle[i].top 5;
              
rectangle[i].right rectangle[i].left 5;
              
hBrush CreateSolidBrush(RGB(255,0,0)) ;
              
FillRect (hWindowdc, &rectangle[i], hBrush) ;
   }
   
EndPaint(hWnd, &ps); 
Leuten, die die Grundlagen nicht draufhaben kann man nicht helfen.
04/04/2011 13:59 GotDamned#13
Quote:
Originally Posted by MoepMeep View Post
Leuten, die die Grundlagen nicht draufhaben kann man nicht helfen.
Irgendwas siehst du hier falsch.
Leute die die Grundlagen nicht drauf haben muss man helfen.
Und wenn man solche Fragen nicht hier (oder in einem anderen Forum) stellen kann, wo dann?

Wenn du keine Lust hast zu helfen, dann solltest du nicht posten, so einfach.

Ansonsten noch fragen? Denke das Problem ist gelöst, evtl noch Verständnis-fragen?