Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Проблема. Рисование на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.053 c
4-1233081707
avi9526
2009-01-27 21:41
2010.08.27
Как получить доступ к скрытому за окном изображению?


2-1273148921
ИванВ
2010-05-06 16:28
2010.08.27
ScrollBar


2-1274443627
istok
2010-05-21 16:07
2010.08.27
проблема подключения к скл2005...


15-1265314234
Kerk
2010-02-04 23:10
2010.08.27
Задачка


2-1272489700
yagluboko
2010-04-29 01:21
2010.08.27
ошибка периода компиляции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский