Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Проблема. Рисование на Canvas е   Найти похожие ветки 

 
Andrey93 ©   (2010-05-18 15:13) [0]

Здравствуйте.
Пишу игру "Морской бой".
Есть процедура, которая на канвасе формы рисует игровое поле(просто линии). Есть кнопка(Button1:TButton), которая делает авторасстановку кораблей. Для ручной расстановки есть объекты RadioGroup1 и RadioGroup2 типа TRadioGroup.
Сначала рисуется первое поле(слева). После нажатия на кнопку Button1 скрываются RadioGroup1 и RadioGroup2 (RadioGroupX.Visible:=false), на их месте рисуется второе поле. Но рисуется оно почему-то некорректно.

До нажатия на Button1:
[img]http://i026.radikal.ru/1005/68/e2fafe8f48c5.jpg[/img]
После нажатия:
[img]http://s45.radikal.ru/i107/1005/65/db78b4d18154.jpg[/img]

Получается, что второе поле рисуется на том месте, где были объекты RadioGroup, у которых даже нет своего canvas"а.

Вот код процедуры рисования поля (Переменная Game включается после расстановки или нажатия на Button1, Sea - фоновый рисунок, dx1 и dx2 - расстояние от левого края формы).
[CODE]procedure TFormGame.FormPaint(Sender: TObject);
begin
 with Canvas do
 begin
   Draw(0,0,Sea);
   pen.Color:=clBlack;
   DrawField(Sender,dx1);
   if Game then
     DrawField(Sender,dx2);
 end;
end;
[/CODE]

Процедура DrawField(Sender:TObject;dx:integer) рисует только линии, буквы и цифры.

Нужно, чтобы второе поле рисовалось корректно.
Я пробовал уничтожать объекты RadioGroup(Free или Destroy). Всё равно поле рисуется некорректно, а программа выдаёт ошибку
[img]http://s002.radikal.ru/i198/1005/b9/e95833bea95c.jpg[/img]

Что посоветуете?


 
Jeer ©   (2010-05-18 15:19) [1]

Как я понял - электроны и позитроны тебе не удалось подружить.
Наверное бегал на уроках физики ?

P.S.
Посоветовать можно только одно - учиться думать, учиться искать, учиться разделять сложность на простые компоненты, учиться воплощать простое из элементарного.


 
Ega23 ©   (2010-05-18 15:21) [2]


> Что посоветуете?


Заранее научиться подшивать подворотничок.


 
RWolf ©   (2010-05-18 15:37) [3]

Рисуй не на форме, а в выделенных для этого PaintBox"ах.


 
Andrey93 ©   (2010-05-18 15:43) [4]

Какая разница, на чём рисовать?) С PaintBox"ом много проблем


 
RWolf ©   (2010-05-18 15:52) [5]

Я к тому, чтобы снабдить каждое поле своей отрисовкой.


 
antonn ©   (2010-05-18 15:52) [6]

разница есть. Рисуй на буферном битмапе, а его выводи на канву


 
Ega23 ©   (2010-05-18 16:04) [7]


> Какая разница, на чём рисовать?) С PaintBox"ом много проблем


Всю жизнь на нём рисовал, проблем не имел.


 
Andrey93 ©   (2010-05-18 16:08) [8]

Ну ок, спасибо)


 
Jeer ©   (2010-05-18 16:27) [9]


> С PaintBox"ом много проблем


Т.е вынести элементы управления на панели и рисовать на канве для тебя еще проще ?
И какие такие проблемы с PB ?
Это всего лишь выделение части канвы с локальными координатами.


 
Andrey93 ©   (2010-05-18 16:44) [10]

А переменные (x,y) в PaintBox.MouseMove считаются от начала фотмы или от начала PaintBox"а?


 
Andrey93 ©   (2010-05-18 16:44) [11]

А переменные (x,y) в PaintBox.MouseMove считаются от начала формы или от начала PaintBox"а?


 
antonn ©   (2010-05-18 16:48) [12]


> А переменные (x,y) в PaintBox.MouseMove считаются от начала
> формы или от начала PaintBox"а?

->

> Это всего лишь выделение части канвы с локальными координатами.


локальными - значит координатами контрола


 
Ega23 ©   (2010-05-18 17:05) [13]


> А переменные (x,y) в PaintBox.MouseMove считаются от начала
> фотмы или от начала PaintBox"а?


В справку заглянуть не позволяет религия?


 
Amoeba_   (2010-05-18 17:35) [14]


> Есть процедура, которая на канвасе формы рисует игровое
> поле(просто линии).

Может в качестве игрового поля использовать DrawGrid?

А это для тех "чайников", кто программирует Морской бой:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=918


 
Andrey93 ©   (2010-05-18 17:42) [15]

Просто у меня почему-то в PaintBox"e никогда ничего не получалось, поэтому я старался его не использовать. А теперь всё получилось, спасибо =)


 
Andrey93 ©   (2010-05-18 17:44) [16]

Amoeba_, не такой у меня Морской Бой))


 
Jeer ©   (2010-05-18 18:03) [17]


> не такой у меня Морской Бой))


Настоящий ? :)


 
Плохиш ©   (2010-05-18 19:25) [18]


> Ega23 ©   (18.05.10 17:05) [13]
> В справку заглянуть не позволяет религия?

Прикалываешься?



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.064 c
2-1269197259
Fr
2010-03-21 21:47
2010.08.27
TRichEdit и SelStart


15-1266979814
brother
2010-02-24 05:50
2010.08.27
IPv6


4-1238080021
ganj
2009-03-26 18:07
2010.08.27
global hook in dll


15-1268170204
Юрий
2010-03-10 00:30
2010.08.27
С днем рождения ! 10 марта 2010 среда


2-1266395128
urgun
2010-02-17 11:25
2010.08.27
TThread+TMemoryStream = исключения при чтении в буффер