рисую я на TImage, с помощью TCanvas... по пикселям
| Код | pic.Canvas.Pixels[round(x),round(WinY/2+R*sin(fi))] := THColor;
|
но когда начинаю двигать объект - картинка начинает попросту лагать.. вот пример функции которая рисует линзу, и заодно ее описывает физически
| Код | procedure OptOs.OFRLinze(h,R,xl,Nsr:real;pic:TImage;k,THColor:integer); var fi,FiM,xs,x:real; y:integer; begin FiM := arcsin((h/(2*R))); xs := xl - R*cos(FiM); fi:=-FiM; WHILE fi <= FiM DO begin x := xs + R*cos(FiM); WHILE x <= (xs + R) DO begin IF x < round(xs+R*cos(fi)) THEN begin pic.Canvas.Pixels[round(x),round(WinY/2+R*sin(fi))] := THColor; KoafPr[round(x),round(WinY/2+R*sin(fi))] := Nsr; YgNorm[round(x),round(WinY/2+R*sin(fi))] := k*fi; IF (R*sin(fi-(1/R)) < 0) and (0<R*sin(fi+(1/R))) THEN begin YgNorm[round(x),round(WinY/2+R*sin(fi))] := 0; end; end; x:=x+1; end; fi:=fi+(1/R); end; FOR y := round(WinY/2 - (h/2)) TO round(WinY + (h/2)) DO begin YgNorm[round(xl),y] := 0; end; end;
|
с объектами которые попроще все нормально, но чем сложнее объект тем больше лагает((( Вроде почитал у вас использовать Bitmap быстрее.... А вот как вопрос не переписывая программу полностью, можно ускорить работу с графикой??? Как вот конкретно можно строчку pic.Canvas.Pixels[round(x),round(WinY/2+R*sin(fi))] := THColor; можно заменить ипользуя bitmap??? |