![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 30.07.2007
Сообщений: 2
|
![]()
Задача: Создать движение прямоугольника.
Что сделал: Реализовал движение очень просто: стирание и рисование в новых координатах, однако при таком способе рисования происходит моргание изображения. Вопрос: Как от него избавиться? |
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end; var ax,ay:integer; Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Rectangle(ax-50,ay-50,ax+50,ay+50); end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin ax:=x;ay:=y;Repaint; end; end.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 30.07.2007
Сообщений: 2
|
![]()
Все равно тоже самое.
|
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Ну не знаю. У меня работает без мерцаний. Ну попробуй что-ли возьми кинь на форму Shape, выставленную в rectangle и меняй его Top и Left...
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 30.03.2007
Сообщений: 124
|
![]()
procedure TForm1.FormPaint(Sender: TObject);
var p:tpaintstructure; begin beginpaint(p); Canvas.Rectangle(ax-50,ay-50,ax+50,ay+50); endpaint(p); end; Может помочь, если нет создай битмап, и рисуй в нем, а затем выводи его на канву ![]() Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
![]() |
![]() |
![]() |
#6 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
На чём рисуется, чем рисуется, по таймеру/нет, как стирается? Код в студию!
пыщь
|
![]() |
![]() |
![]() |
#7 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Проще всего DoubleBuffered:=true того на чем рисуешь. Не поможет рисуй в буфере а потом только на экран. Не написал ничего, на чем, как? Мы что догадываться должны?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 22.05.2007
Сообщений: 511
|
![]()
Посмотри вот этот код
Код:
|
![]() |
![]() |
![]() |
#9 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Вообще то это не мерцание а ступенчатость передвижения. С мерцанием ты столкнешься позже когда изображения будешь перемещать.
if x < Form1.ClientWidth then x := x+2 Timer1.Interval:=20; Так лучше? P.S. Строка LineTo(x+20*dx,y-10*dy); повторяется 3 раза, это так надо ?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 31.07.2007 в 17:51. |
![]() |
![]() |
![]() |
#10 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Хе, спрашивал Юра. а код выложил Aleksandr
![]()
пыщь
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с dll( | DM_bite | Помощь студентам | 10 | 31.07.2008 16:05 |
проблема с *.chm | FAiver | Свободное общение | 5 | 28.09.2007 21:01 |
Помогите с рисованием на Delphi, компонент paintbox | Jose | Общие вопросы Delphi | 10 | 01.02.2007 14:18 |