Einzelnen Beitrag anzeigen

Kytrix

Registriert seit: 26. Nov 2007
54 Beiträge
 
#1

hDC überzeichnet zu unbestimmten zeiten alles

  Alt 17. Mai 2010, 04:14
Hi ich habe ein inzwischen etwas größeres projekt in dem ich alle objekte per hand zeichne was auch wunderbar funktioniert bis irgendwann zu einem zufälligen zeitpunkt der komplette berreich mit einer meiner verwendeten farben gefüllt wird.

aber da dies spontan passiert weiß ich auch nicht wo ich ansetzen sollte mit der fehlerssuche ?

Hier mal ein auszug aus einer der zeichenroutinen...

Delphi-Quellcode:
rocedure TOrganismus.Koerper;
Var Winkel, SichtX, SichtY, SichtRichtungI, Prozent: Integer;
    p: Extended;
    R, G: Byte;
begin
  //Kreis
  Winkel:=1;
  APenWidth:=2;
  hPen := CreatePen (APenStyle, APenWidth, APenColor);
  SelectObject(A_DC,hPen);
  MoveToEx(A_DC, AStartX+Round(cos(Pi*Winkel/180)*AGroesse), AStartY+Round(sin(Pi*Winkel/180)*AGroesse) ,NIL );
  for Winkel := 1 to 360 do
  begin
    LineTo(A_DC, AStartX+Round(cos(Pi*Winkel/180)*AGroesse), AStartY+Round(sin(Pi*Winkel/180)*AGroesse) );
  end;
  hBrush:= CreateSolidBrush(ABrushColor);
  SelectObject(A_DC,hBrush);
  ExtFloodFill(A_DC, AStartX,AStartY,APenColor,FLOODFILLBORDER);
  //RichtungsLinie
  APenWidth:=3;
  hPen := CreatePen (APenStyle, APenWidth, clBlack);
  SelectObject(A_DC,hPen);
  MoveToEx(A_DC, AStartX, AStartY, NIL);
  LineTo(A_DC, AStartX+Round(cos(Pi*ASichtRichtung/180)*AGroesse), AStartY+Round(sin(Pi*ASichtrichtung/180)*AGroesse) );
  //Sichtfeld
  APenWidth:=1;
  SetBkMode(A_DC, TRANSPARENT);
  APenStyle:=PS_DOT;
  hPen := CreatePen(APenStyle, APenWidth, clBlack);
  SelectObject(A_DC,hPen);
  SichtX:=AStartX+Round(cos(Pi*ASichtRichtung/180)*AGroesse);
  SichtY:=AStartY+Round(sin(Pi*ASichtRichtung/180)*AGroesse);
  MoveToEx(A_DC, AStartX+Round(cos(Pi*ASichtRichtung/180)*AGroesse), AStartY+Round(sin(Pi*ASichtrichtung/180)*AGroesse), NIL );
  for SichtRichtungI := (ASichtRichtung-(ASichtWinkel div 2)) to (ASichtRichtung+(ASichtWinkel div 2)) do
  begin
    LineTo(A_DC, SichtX+Round(cos(Pi*SichtRichtungI/180)*ASichtWeite), SichtY+Round(sin(Pi*SichtRichtungI/180)*ASichtWeite) );
  end;
  LineTo(A_DC, AStartX+Round(cos(Pi*ASichtRichtung/180)*AGroesse), AStartY+Round(sin(Pi*ASichtrichtung/180)*AGroesse) );
Angehängte Dateien
Dateityp: zip proj_gevo_113.zip (380,0 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat