Färben und Scrollen
-
Hallo zusammen,
ich versuche immer noch ein kleines plot-Programm zu schreiben. Ich habe da aber gerade noch zwei Probleme:- Meine Messwerte lese ich aus einer Datei. Ich habe mir in einem Childfenster ein Koordinatensystem definiert und es werden jeweils zwei Punkte mit einander verbunden.
file.close(); file.open(filename, ios::out); file >> pufferB; DrawRedPointConnection( hDC, 10, 275, 10 + ( 700/200) , pufferB, 1); for(int i=1; i<Anzahl; i++){ pufferA = pufferB; file >> pufferB; DrawRedPointConnection( hDC, 10 + i*(700/200), pufferA, 10 + (i+1)*(700/200) , pufferB, 1); } file.close();
Das eigentlich zeichnen übernehmen folgende zwei Funktionen:
void DrawRedPointConnection( HDC hDC, int x1, int y1, int x2, int y2, int pixsize){ DrawLine(hDC, 254, 0, 0, pixsize, x1,y1,x2,y2); } void DrawLine(HDC hDC, int red, int green, int blue, int pixsize, int xStart, int yStart, int xEnd, int yEnd){ HPEN pen, oldPen; pen = CreatePen(PS_SOLID, pixsize, RGB(red, green, blue)); oldPen = (HPEN)SelectObject(hDC, pen); MoveToEx(hDC, xStart,yStart, NULL); LineTo(hDC,xEnd,yEnd); }
Die ersten male zeichnet er auch eine schöne rote Linie, doch sobald ca. 140 Messwerte in der Datei stehen wird die Linie schwarz. Ändere ich die Datei ( wähle also eine leere aus) ist die Linie immer noch schwarz. Erst nach einem Neustart des Programms ist es wieder rot (für weitere ca. 140 Zeichenschritte). Was kann ich dagegen machen??
- Er zeichnet nur bis zum Ende des Fensters, dann kann ich aber nicht sehen was weiter passiert. Ich hätte da gerne eine Scrollbar, doch wenn ich Childfenster mit ES_AUTOHSCROLL oder WS_SCROLL erstelle passiert da gar nix, außer das eine Scrollleiste erscheint.
hwndChild = CreateWindowEx( WS_EX_CLIENTEDGE, szClassChildName, "Plot", WS_CHILD | WS_BORDER | WS_CLIPSIBLINGS | WS_VISIBLE | ES_AUTOHSCROLL , 300, 5, 700, 550, hwnd, (HMENU) 12, hChildInstance, NULL);
Wie kann ich es so einstellen, dass wenn meine Linie das Ende erreicht der Sichtbereich meines Fensters sich um x pt. verschiebt?
Schon mal vielen Dank, ihr seid die Besten
-
Silenth schrieb:
Was kann ich dagegen machen??
Nur einmal CreatePen aufrufen.
Silenth schrieb:
Wie kann ich es so einstellen, dass wenn meine Linie das Ende erreicht der Sichtbereich meines Fensters sich um x pt. verschiebt?
Indem du beim Zeichnen alle X-Werte um dieses x verringerst.
-
Danke für die Antwort! Das erste funktioniert wunder bar.
MFK schrieb:
Indem du beim Zeichnen alle X-Werte um dieses x verringerst.
Nur den zweiten Teil versteh ich nicht so ganz! Könntest du mir noch mal eben näher erklären was du damit meinst??