Почему круг оставляет след при движении?
uses GraphWPF;
var
xy: integer;
begin
while true do
begin
Pen.Color := Colors.White;
DrawCircle(xy, xy, 20);
Inc(xy);
Pen.Color := Colors.Black;
DrawCircle(xy, xy, 20);
Sleep(100);
end;
end.
Потому что вы не стираете предыдущий, перед тем как рисовать следующий.
(Мдэ, накосячил так накосячил.) Кстати говоря, а блокировка перерисовки есть в GraphWPF?
Gleb
19.Август.2018 17:13:31
#4
А чем вообще GraphWPF отличается от GraphABC?
А что делать если след все-равно остается?
ABC это GDI который кривой и не даёт больше 20 фпс даже на супер-компьютерах
WPF это WPF, оно и с 3D графикой, и с графическим ускорением справляется
А, я понял… Это наверное из за сглаживания… Но если вам надо делать анимацию - лучше так:
uses GraphWPF;
var xy := 30.0;
procedure Redraw;
begin
xy += 0.7;
Pen.Color := Colors.Black;
DrawCircle(xy, xy, 20);
end;
begin
BeginFrameBasedAnimation(Redraw,60);
end.
Так же можно сделать у Redraw
1 параметр типа integer
- в него будет передаваться номер кадра который сейчас рисуется.
В GraphABC подобное было из-за сглаживания.
Ну да, оно рисует некоторые пиксели круга (те что не полностью закрашены) немного прозрачными. И получается когда оно прозрачными белыми пикселями закрашивает прозрачные чёрные - цвет остаётся светло серым в итоге.
Admin
20.Август.2018 08:34:43
#11
Делайте Window.Clear и перерисовывайте экран полностью
А блокировать рисование как то можно? А то ведь мигать будет…
Admin
20.Август.2018 11:41:50
#13
Будет, но несильно.
Лучше сделать анимацию на основе кадра:
uses GraphWPF;
var x := 50;
procedure Draw;
begin
Circle(x,150,30,Colors.Green);
x += 1;
end;
begin
BeginFrameBasedAnimation(Draw);
end.
1 лайк
Admin:
Будет, но несильно.
А можно на совсем этого избежать?
Admin
20.Август.2018 11:44:51
#15
Ну, я привел код. Там вообще мерцать не будет.
Обновление - 60 кадров в секунду. С частотой монитора.
Ну, кстати, это не максимум. У меня вот монитор обновляется 62.5 раз в секунду. И если передавать ему информацию только 60 раз - выглядит немного хуже чем те же 65.
Admin
20.Август.2018 11:51:41
#17
Передайте 120. Там доппараметр есть
Gleb
20.Август.2018 12:11:41
#18
А там, случаем, не видеокарта используется для расчётов?
Ну, для графики, вроде, таки использует, или пытается. Но только если внутренности WPF, в модуле написанном на паскале ничего про GPU я не видел.
Gleb
20.Август.2018 12:44:01
#20
Интересно всё таки GPU к Паскалю подключить. Может, не так страшен чёрт, как его малюют?