![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 25.03.2011
Сообщений: 2
|
![]()
Приветствую. Требуется помощь в доведении программы до приличного состояние. Изначальное задание было написать скринсэйвер с простой анимацией. Проблема заключается в том, что я не могу сделать так что бы программа работала на весь экран и была адаптивна к разным расширениям экрана.
прилагаю текст на котором я пока остановился: //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit3.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm3 *Form3; //--------------------------------------------------------------------------- __fastcall TForm3::TForm3(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- int x=-68,y=500; // Начальное положение базовой точки // Рисуем на поверхности формы кораблик void __fastcall TForm3::Ship(int x,int y) { int dx=4,dy=4; // Шаг сетки // Корпус и надстройку будем рисовать // при помощи метода Polygon TPoint p1[7]; // Координаты точек корпуса TPoint p2[8]; // Координаты точек надстройки TColor pc,bc; //Текущий цвет карандаша и кисти // Сохраним текущий цвет карандаша и кисти pc=Canvas->Pen->Color; bc=Canvas->Brush->Color; // Установим нужный цвет карандаша и кисти Canvas->Pen->Color=clBlack; Canvas->Brush->Color=clWhite; // Корпус p1[0].x=x; p1[0].y=y; p1[1].x=x; p1[1].y=y-2*dy; p1[2].x=x+10*dx; p1[2].y=y-2*dy; p1[3].x=x+11*dx; p1[3].y=y-3*dy; p1[4].x=x+17*dx; p1[4].y=y-3*dy; p1[5].x=x+14*dx; p1[5].y=y; p1[6].x=x; p1[6].y=y; Canvas->Polygon(p1,6); // Надстройка p2[0].x=x+3*dx; p2[0].y=y-2*dy; p2[1].x=x+4*dx; p2[1].y=y-3*dy; p2[2].x=x+4*dx; p2[2].y=y-4*dy; p2[3].x=x+13*dx; p2[3].y=y-4*dy; p2[4].x=x+13*dx; p2[4].y=y-3*dy; p2[5].x=x+11*dx; p2[5].y=y-3*dy; p2[6].x=x+10*dx; p2[6].y=y-2*dy; p2[7].x=x+3*dx; p2[7].y=y-2*dy; Canvas->Polygon(p2,7); Canvas->MoveTo(x+5*dx,y-3*dy); Canvas->LineTo(x+9*dx,y-3*dy); // Капитанский мостик Canvas->Rectangle(x+8*dx,y-4*dy,x+11*dx,y-5*dy); // Трубы Canvas->Rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy); // Иллюминаторы Canvas->Ellipse(x+11*dx,y-2*dy,x+12*dx,y-1*dy); Canvas->Ellipse(x+13*dx,y-2*dy,x+14*dx,y-1*dy); // Мачта Canvas->MoveTo(x+10*dx,y-5*dy); Canvas->LineTo(x+10*dx,y-10*dy); // Оснастка Canvas->Pen->Color=clWhite; Canvas->MoveTo(x+17*dx,y-3*dy); Canvas->LineTo(x+10*dx,y-10*dy); Canvas->LineTo(x,y-2*dy); // Восстанавливаем цвет карандаша и кисти Canvas->Pen->Color=pc; Canvas->Brush->Color=bc; } // Обработка события OnTimer void __fastcall TForm3::Timer1Timer(TObject *Sender) { // Стереть кораблик - закрасить цветом, совпадающим // с цветом фона (формы) Canvas->Brush->Color=Form3->Color; Canvas->FillRect(Rect(x-1,y+1,x+68,y-40)); // Вычислить координаты базовой точки x+=1; if(x>ClientWidth) { // Кораблик "уплыл" за правую границу формы x=-70; // Чтобы кораблик "выплывал" из-за левой // границы формы y=random(Form3->ClientHeight); } // Нарисовать кораблик на новом месте Ship(x,y); } Безусловно, написано неграмотно. Программа войдет в курсовой проект. Буду очень признателен за помощь. |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 25.03.2011
Сообщений: 2
|
![]()
Дописал :
// Обработка события OnCreate для формы void __fastcall TForm3::OnCreate(TObject *Sender) { Form3->Width = Screen->Width; Form3->Height = Screen->Height; } // Обработка события OnKeyDown для формы void __fastcall TForm3::OnKeyDown(TObject *Sender) { Close(); } // Обработка события OnMouseDown для формы void __fastcall TForm3::OnMouseDown(TObject *Sender) { Close(); } // Обработка события OnMouseMove для формы void __fastcall TForm3::OnMouseMove(TObject *Sender) { Close(); } Однако программа ни при нажатии клавиш ни при движении мышки не закрывается ((( что не так? |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 06.01.2011
Сообщений: 369
|
![]()
Порылся в своих архивах, нашел видеоурок, посвященный созданию заставки. Доведен до ума. Ссылка на файлы (около 100МБ):
http://www.4shared.com/dir/-XKxMlM4/screendesktop.html файлы bmw*.jpg- картинки, которые использовались в засатвке; project1.scr- собственно заставка; screendesktop.wmv- видеокрок; txt-файлик- инструкция по установке заставки.
Программирую по необходимости
Последний раз редактировалось tsar_; 11.04.2011 в 15:03. |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Оформите код при момощи: ![]() Далее кладите на форму таймер и в нём проверяйте нажатие клавишь при помощи: Код:
|
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание новогоднего скринсейвера (веб камера) | Ghost_V | Помощь студентам | 3 | 15.12.2009 23:33 |
Как задать время до появления скринсейвера | Vask | Win Api | 4 | 17.01.2009 21:30 |
Написание сервисов | Domovoy | Свободное общение | 4 | 17.07.2008 12:26 |
Скринсейвера на С++ | zender | Общие вопросы C/C++ | 1 | 10.01.2008 11:37 |