Главная страница
    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.49 MB
Время: 0.077 c
15-1271847638
Scot Storch
2010-04-21 15:00
2010.08.27
БД кожгалантерейного магазина


15-1274156230
юзер_пузер
2010-05-18 08:17
2010.08.27
flash & ActionScript 3


2-1270400826
lamer6666
2010-04-04 21:07
2010.08.27
Потоки и POST


15-1270836779
Nickola2
2010-04-09 22:12
2010.08.27
Работа с USB - портом


2-1271829332
vegarulez
2010-04-21 09:55
2010.08.27
Как в KaZip`е корректно работать с русскими названиями файлов?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский