Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
Delphi 6 Professional
|
AW: Warum werden Regionen in meinem Programm nicht gezeichnet!
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..
|
|
Zitat
|