Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#4

AW: Warum werden Regionen in meinem Programm nicht gezeichnet!

  Alt 6. Feb 2018, 13:27
Hmm..

Mehrere Fehler:
Delphi-Quellcode:
    WM_PAINT:
..
        SelectClipRgn(dc, hRgnClip); // HIER hat hRgnClip den Wert 0!!
// hRgnClip ist eine lokale Variable, welche beim Ersten Durchlauf im WM_SIZE zwar gesetzt
// wird, jedoch danach wieder weggeschmissen wird!!
// Somit wird mit hRgnClip = 0 die Region wieder gelöscht!

        fRadius := hypot(cxClient / 2.0, cyClient / 2.0);

        //Hatte zuerst gedacht, ich brauchte einen Stift, um zeichnen zu
        //können, wie auch auf einem Blatt Papier
// pen := CreatePen(PS_SOLID,1,RGB(0,0,255));
// penold := SelectObject(dc, pen);
// SelectObject(dc,penold);
        //Der erzeugte Stift führt nicht zum Erfolg, die Region wird dennoch
        //nicht gezeichnet, der Fensterhintergrund bleibt weiß

        fAngle := 0.0;
        for i := 0 to 359 do
        begin
          MoveToEx(dc,0,0,nil);

// Wo Wird hier dein fAngle verändert? Es bleibt IMMER 0.0
          LineTo(dc,Round(fRadius*cos(fAngle)+0.5),Round(-fRadius*sin(fAngle)+0.5));

// So sollte es funktionieren, wobei ich nicht weiß, ob die Berechnung passt..
          LineTo(dc,Round(fRadius*cos(i)+0.5),Round(-fRadius*sin(i)+0.5));

        end;

// DeleteObject(pen);

        EndPaint(wnd, ps);
      end;

Delphi-Quellcode:
WM_SIZE :
..
// Da hRgnClip lokal ist, wird es nie <> 0..
if hRgnClip <> 0 then DeleteObject(hRgnClip);
Habe dies nur angetestet..
  Mit Zitat antworten Zitat