Einzelnen Beitrag anzeigen

Kytrix

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

Re: hDC überzeichnet zu unbestimmten zeiten alles

  Alt 17. Mai 2010, 15:32
Es kann nicht an der Füllfunktion liegen ....

ich verwende sie garnicht mehr und das selbe ergebis (früher oder später) siehe anhang ....


Wie schnell ich das alles zeichne ist für mich nicht wirklich relevant aber wenn du was besseres für mich hast dann her damit


ich verwende "doublebuffer"
Delphi-Quellcode:
  DC:=GetDC(gEvo.WindowHandle);

  DC_Mem := CreateCompatibleDC(DC);
  BM_Mem := CreateCompatibleBitmap(DC, gEvo.Width, gEvo.Height);
  H_Old := SelectObject(DC_Mem, BM_Mem);
.....
Delphi-Quellcode:
  Brush:= CreateSolidBrush(clWHITE);
  SelectObject(DC_Mem, Brush);
  Pen:= CreatePen(PS_SOLID,10,clPurple);
  SelectObject(DC_Mem, Pen);

  Rectangle(DC_Mem,0,0,gEvo.Width,gEvo.Height); // vielleicht werden die Brushes durcheinander
  MoveToEx(DC_Mem,2,2,NIL); // geworfen und so der falsche farbwert angenommen?
  LineTo(DC_Mem,gEvo.Width-2,2);
  LineTo(DC_Mem,gEvo.Width-2,gEvo.Height-2);
  LineTo(DC_Mem,2,gEvo.Height-2);
  LineTO(Dc_Mem,2,2);
  for i := 1 to ProduzentID do
  begin
    Produzent[i].Koerper(DC_Mem);
  end;
  for i := 1 to OrganismusID do
  begin
    Organismus[i].Bewegung(DC_Mem);
  end;
  for i := 1 to ProduzentID do
  begin
    Produzent[i].Kollision;
  end;

  SetBkMode(DC_Mem, TRANSPARENT);
  TextOut(DC_Mem,7,7,PWChar(IntToStr(Frames)+' FpS; '+IntToStr(Sekunden)+' Sek'),10+Length(IntToStr(Frames))+Length(IntToStr(Sekunden)));

  BitBlt(DC, 0, 0, gEvo.Width, gEvo.Height, DC_Mem, 0, 0, SRCCOPY);
Angehängte Dateien
Dateityp: exe proj_gevo_551.exe (838,5 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat