Linien und Pixel



  • Hallo.

    Muß ein Programm schreiben, dass ähnlich wie Paint Linien zieht, d.h. bei gedrückter Maustaste damit startet, die Linie in Richtung der Mausbewegung zieht und beim Loslassen der Taste abschließt.

    Das funktioniert auch. Nun möchte ich, dass bei Drücken und Loslassen der Maustaste an der gleichen Stelle, ein Pixel gezeichnet wird (ebenfalls wie in Paint). Wie kann ich das mit meinem vorhandenen Programmcode am besten umsetzen?

    Gruß

    seventh_son

    LRESULT CALLBACK WndProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam) {
    
    	static int iZaehler=0;
        struct KoordStruct {
    	   int iXKoord;
    	   int iYKoord;
       } static Koords [250];
    
    	HDC hdc;
    	RECT rect;
    	PAINTSTRUCT ps;
    	int i;
    
    	switch (uiMessage) 
    	{
    	case WM_PAINT:
    
    		hdc=BeginPaint(hWnd, &ps);
    
    		for (i=1; i<=iZaehler;i=i+2)
    		{	
    
    			MoveToEx(hdc,Koords[i].iXKoord,Koords[i].iYKoord, NULL);
    			LineTo(hdc,Koords[i+1].iXKoord,Koords[i+1].iYKoord);
    
    		}
    		EndPaint(hWnd, &ps);
    		return 0;
    
    	 case WM_LBUTTONDOWN:
    		if(iZaehler<251)
    		{
    			iZaehler++;
    			Koords[iZaehler].iXKoord=LOWORD(lParam);
    			Koords[iZaehler].iYKoord=HIWORD(lParam);
    
    			iZaehler++;
    
    		}
    		return 0;
    
    	case WM_MOUSEMOVE:
    		if (wParam & MK_LBUTTON)
    		{
    			Koords[iZaehler].iXKoord=LOWORD(lParam);
    			Koords[iZaehler].iYKoord=HIWORD(lParam);
    			GetClientRect(hWnd,&rect);
    			InvalidateRect(hWnd,&rect,TRUE);
    
    		}
    


  • Du könntest entweder in WM_LBUTTONDOWN nach dem zweiten iZaehler++; schon die Koordinaten für den Endpunkt setzen, oder du fängst eben auch noch WM_LBUTTONUP ab und machst das dann dort...


Anmelden zum Antworten