| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Организация окна заставки |
| Автор: Zero 8.11.2004, 23:19 | ||||||||
| Народ, у меня в программе, есть заставка, которая работает следующим образом: При запуске программы, появляется невидимое окно, на котором есть картинка, а за этой картинкой цифра которая отсчитывается в обратном порядке начиная от 3-ёх, но как раз проблема в том, что цифры наезжают др. на друга, хотя если в не прозрачном окне сделать тоже самое, тогда всё нормально, а переключение цифр происходит так:
Но вот сам код, он сделан в двух модулях: Для Самого проекта:
А это модуль формы окна заставки:
При этом на формеволяется таймер с интервалом в 3000; А дополнительные настройки формы: BorderStyle ─ BsNone; ... остальные не имеет смысла показывать. А также шрифт Label ─ 200, но он также не на что не влияет... Замечание: Единственное могу добавить, если сторку
Пожалуйста, если кто знает как сдесь можно что-либо исправить, то напишить что-нибудь. |
| Автор: p0s0l 9.11.2004, 15:46 | ||||||||
| На ум приходит такое: 1) Использовать свойство TransparentColor / TransparentColorValue Это самый правильный способ будет, и самый простой, но работать будет только начиная с Win2k (вроде)... Для этого установи свойство TransparentColor в True, выставь TransparentColorValue, например, в clWhite. В OnPaint будет так:
Если подумать, то можно упростить так (OnPaint):
2) Способ немного посложнее. Не совсем правильный, но работать будет везде. Для этого запоминай то, что нарисовано на экране на том месте, куда будет выведена форма. А потом рисуй на форме это в качестве фона, и поверх этого выводи картинку... Будет криво смотреться, если под твоей формой что-нибудь шевелится (кино например смотрится) - оно в пределах формы будет неподвижным... Делается так: В OnCreate ставишь:
В OnPaint будет так:
PS: совет: 1- грузи картинку лучше один раз и потом её отображай. 2- освобождай память, а то у тебя нет ниодного bitmap.Free (хотя может ты это специально не написал, чтоб меньше кода было тут ?...) Добавлено @ 15:53 3) Использовать регионы - в FAQ поищи статью по этому поводу... |
| Автор: Zero 9.11.2004, 21:00 | ||||
Это верно, а вот в Win'9X, такое сво-во не работает, я конечно курсач делаю на XP, но предявлять я его буду, в радике, где стоят совковые компы, и с ОС Windows '98. Конечно 1-ый вариант можно было бы исп. в лучшем случае, но придётся всётаки второй Да кстати спасибо г-н Посол, 2-ой код вполне работает, но теперь появилась др. мелкая проблема, изображение загружаемое, из файла появляется с копией рабочего стола но только в таком размере, какой размер имеет сам мой файл.bmp, а остальная часть рабочего стола остаётся без изменений. В принципе можно сделать, за место
т.е. чтобы размер определялся не из изображения, а присваивал размер экрана, но тогда изображение появляется в верхнем левом углу. PoSol, может ты знаешь как сделать чтобы изображение грузилось именно в центор экрана, или что не будь моумнее можеш предложить, а то я уже целых час, сижу тут химичу, но доконца как надо здесь, не получается. И ещё из-за этого мне придётся придумывать как получить размер экрана универсальным способом... |
| Автор: p0s0l 9.11.2004, 23:52 | ||||
| Что-то не понял о чём речь... Если правильно дошло, то у тебя на форме показывается не та часть экрана ? Для универсальности можно сделать так (так даже можно форму будет перемещать по экрану): Создание bb в OnCreate будет таким:
Вместо Canvas.Draw(0, 0, bb); (в OnPaint) будет такое:
|
| Автор: Zero 10.11.2004, 00:21 |
| Спасибо, то что надо!!! Теперь всё, супер!!! |