Необходимо перемещать прямоугольник ( для примера ) с помощбю клавиш управления курсором как это правильно описываеться? лучше в процедуре иои в самой программе! желательно пример! Спасибо
volvo
30.09.2005 1:01
Лучше всего для перемещения простых фигур пользоваться вот такой структурой:
var pos_x, pos_y: integer; size_x, size_y: integer; ...
Case ReadKey Of { управляющие клавиши } #0: Begin { скрываем прямоугольник со старыми координатами ... } Rectangle(pos_x, pos_y, pos_x+size_x, pos_y+size_y);
{ ... в зависимости от нажатой клавиши изменяем координаты ... } Case ReadKey Of #72: { Вверх } dec(pos_y, 5); #80: { Вниз } inc(pos_y, 5); #75: { Влево } dec(pos_x, 5); #77: { Вправо } inc(pos_x, 5); End; { ... и показываем прямоугольник на новых координатах } Rectangle(pos_x, pos_y, pos_x+size_x, pos_y+size_y); End; { #0 } End;
Здесь все дело в режиме XorPut, при использовании которого для "гашения" изображения достаточно нарисовать еще раз то же самое изображение в том же самом месте, и нет необходимости хранить фон в буфере (но, к сожалению, режим рисования, задаваемый в SetWriteMode, действует только на рисование отрезками: Line, LineRel, LineTo, Rectangle и DrawPoly)...
punkska
30.09.2005 11:20
а другие элементарные фигуры перемещать как тогда
volvo
30.09.2005 12:27
А какие фигуры ты считаешь элементарными? Если она может быть отрисована линиями, то точно по такому же принципу: задаешь координаты pos_x и pos_y, и отрисовываешь фигуру используя только эти две координаты (чтобы не менять значения многих переменных в момент нажатия на кнопки управления курсором)...
Если же "элементарные" фигуры НЕ отрисовываются линиями, то используй не XORPut, а обычный CopyPut, и для того, чтобы стереть фигуру, просто рисуй ее цветом фона (GetBkColor)
punkska
30.09.2005 12:36
точно!!! спасибо!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.