Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 28.07.09 08:22. Заголовок: Shadow
Всем, привет ! Нет ли у кого файла Shadow.obj (Пришлось, тут, вспомнить DOS ) ? почта filnet (at) mail.ru
|
|
|
Ответов - 4
[только новые]
|
|
|
| постоянный участник
|
Пост N: 350
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.07.09 12:14. Заголовок: У меня нет, но в кни..
У меня нет, но в книге Спенсера по программированию на Clipper приведен код подобной функции. Если у вас есть доступ к этой книге, то вы можете взять оттуда. По крайней мере воспользоваться идеей. Если память не изменняет, то просто читается экран в области будущей тени, заменяется цвет на какой-нибудь темно-белый на сером или черном фоне и затем снова записывается на свое место.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 29.07.09 07:56. Заголовок: ********************..
***************************** function shadow(v,l,n,p) //Реализация тени ***************************** local qq1,qq2,j,co:=setcolor() setcolor('+n/n') qq1:=savescreen(v+1,p+1,n+1,p+1) qq2:=savescreen(n+1,l+1,n+1,p) if p<79 for j=1 to n-v+1 @ v+j,p+1 say substr(qq1,j*2-1,1) next endif if n<24 for j=1 to p-l+1 @ n+1,l+j say substr(qq2,j*2-1,1) next endif setcolor(co) return nil
|
|
|
|
| постоянный участник
|
Пост N: 351
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.07.09 12:20. Заголовок: Мне представляется, ..
Мне представляется, что приведенный метод будет работать медленно. Правда на новых компьютерах это будет незаметно, а вот для старых компьютерпов я бы его не стал использовать. Приведенный wad1 код навел меня на мысль, что вместо цикла с командой SAY, лучше использовать следующий прием. С помощью SAVESCREEN() вы читаете область экрана, где будет распологоаться тень. Понадобится два раза применить эту функцию для тени справа от прямоугольника и для тени снизу от прямоугольника. Строка, которая будет содержать образ экрана, состоит из символов текста и символов атрибута цвета. Вот именно в этой строке вы все символы цвета заменяете на конкретный атрибут цвета тени (например, белый на сером). А затем вызываете функцию RESTSCREEN() с изменненой строкой.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 29.07.09 12:29. Заголовок: Спасибо. Нашел я уже..
Спасибо. Нашел я уже этот shadow.obj Знакомые попросили исправить в древней DOS проге какую-то ерунду. Из исходников только .rmk файл. Там этот .obj и упоминался. В общем все заработало
|
|
|
|