|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.07.2007, 12:24 | #1 |
Новичок
Джуниор
Регистрация: 30.07.2007
Сообщений: 2
|
Проблема с рисованием прямоугольника
Задача: Создать движение прямоугольника.
Что сделал: Реализовал движение очень просто: стирание и рисование в новых координатах, однако при таком способе рисования происходит моргание изображения. Вопрос: Как от него избавиться? |
30.07.2007, 12:33 | #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...
|
|
30.07.2007, 13:17 | #3 |
Новичок
Джуниор
Регистрация: 30.07.2007
Сообщений: 2
|
Все равно тоже самое.
|
30.07.2007, 14:10 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну не знаю. У меня работает без мерцаний. Ну попробуй что-ли возьми кинь на форму Shape, выставленную в rectangle и меняй его Top и Left...
I'm learning to live...
|
30.07.2007, 17:02 | #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; Может помочь, если нет создай битмап, и рисуй в нем, а затем выводи его на канву
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!! |
30.07.2007, 17:20 | #6 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
На чём рисуется, чем рисуется, по таймеру/нет, как стирается? Код в студию!
пыщь
|
31.07.2007, 00:11 | #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)
Проверь себя! Онлайн тестирование | Мой блог |
31.07.2007, 09:28 | #8 |
Форумчанин
Регистрация: 22.05.2007
Сообщений: 511
|
Посмотри вот этот код
Код:
|
31.07.2007, 17:48 | #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. |
31.07.2007, 18:33 | #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 |