purebasic.info

PureBasic forum
Текущее время: Ср янв 17, 2018 1:51 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Пт апр 04, 2014 7:15 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Я все понимаю, что времена скринсейверов канули в лету, но тем не менее. Предлагаю вашему вниманию, а особенно фанатам к/ф Матрица эту заставочку
Выключать - ЛКМ
Проверил на win xp и win7
Файл TheMatrix.scr это уже скомпиленный скринсейвер, достаточно положить его в каталог WINDOWS и выбрать в настройках экрана


Вложения:
SCR.rar [369.52 KiB]
Скачиваний: 218

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт апр 04, 2014 8:02 pm 
Не в сети
профессор

Зарегистрирован: Вт янв 13, 2009 2:41 pm
Сообщений: 369
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
Пункты репутации: 8
Прикольно. Правда со шрифтами наверное можно было работать и через AddFontMemResourceEx (сам не проверял) без лишних телодвижений (записывания фонтов во временныю папку).


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт апр 04, 2014 8:48 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6220
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
Первый раз вижу реализацию в оконном режиме. Обычно Screen, спрайты, попроще реализация.
Оригинально.

_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб апр 05, 2014 2:46 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Fox писал(а):
AddFontMemResourceEx (сам не проверял)

То же не пробовал, даже и не знал :D
Если попробую и получится, исправлю код
kvitaliy писал(а):
Первый раз вижу реализацию в оконном режиме. Обычно Screen, спрайты, попроще реализация.
Оригинально.

Для меня не проще, я дуб в 2DDrawing, никогда не кодил

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб апр 05, 2014 4:58 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6220
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
Тогда тебе для затравки, совсем короткий код ( конкурсные PurePunch 100 строк)
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
; код для 5.2*, ниже работать не будет или менять на на  3D спрайты
 
ExamineDesktops() : sw=DesktopWidth(0) : sh=DesktopHeight(0)
InitSprite()
OpenScreen(sw,sh,DesktopDepth(0),"")
InitKeyboard() :  SpriteQuality(1)
If sh=>1200
  a=256
EndIf
 ;AddFontResource_("MATRSYMB.TTF")   ; Устанавливаем шрифт в систему  
f=FontID(LoadFont(-1,"Courier",sh/55,a));"MATRSYMB", хотя встроенный Courier мне как то по виду лучше!
StartDrawing(ScreenOutput())
DrawingFont(f) : cw=TextWidth(".")+2 : ch=TextHeight(".")+2
  StopDrawing()
mw=sw/cw : mh=sh/ch : ox=(sw-(cw*mw))/2 : oy=(sh-(ch*mh))/2 : ct=mh*2
Global Dim cm.i(2,2,2)
Global Dim cmm.i(2,2,2)
Global Dim rc.i(2)
Global Dim lny.i(mw*4)
Global Dim yl.i(mw)
 
For a=0 To mw*4
  lny(a)=(a&3)*mh/4
Next
For y=0 To 2
  For x=0 To 2
    For a=0 To 2
      cm(x,y,a)=Random(223)+32 : b=Random(9)-5 : cmm(x,y,a)=b-(~b>>3)
    Next
  Next
Next
 
b=cw-1 : c=ch-1
For a=0 To 1
  CreateSprite(a,16,16,4) :  TransformSprite(a,0,0,b,0,b,c,0,c) : b=sw-1 : c=sh-1
Next
CreateSprite(2,sw,sh) : TransparentSpriteColor(2,1)
StartDrawing(SpriteOutput(0))
  Box(0,0,16,16,#White)
StopDrawing()
 
Repeat
  t=ElapsedMilliseconds() : ExamineKeyboard()
  StartDrawing(SpriteOutput(2))
    DrawingFont(f)
    For x=0 To mw-1
      yl(x)=yl(x)+1
      For a=x*4 To (x*4)+3
        y=lny(a)+1
        If y=>0
          If y<mh
            b=48+Random(35) : DrawText((x*cw)+ox+1,(y*ch)+oy+1,Chr(b+(b/58*7)),a&1,0)
          Else
            y=yl(x)-(Random(mh))-(mh/8)
            If y>0
              y=0
            EndIf
            yl(x)=y
          EndIf
        EndIf
        lny(a)=y
      Next
    Next
  StopDrawing()
  If ct=0
    For y=0 To 2
      For x=0 To 2
        b=cmm(x,y,cc) : a=cm(x,y,cc)+b
        If a<32 Or a>255
          c=(a>>8) : a=(c*223)+32 : b=(Random(4)+1)*(1-(c*2))
        EndIf
        cm(x,y,cc)=a : cmm(x,y,cc)=b
      Next
    Next
    StartDrawing(SpriteOutput(1))
      For b=0 To 1
        For a=0 To 1
          For y=0 To 7
            For x=0 To 7
              For c=0 To 2
                rc(c)=((cm(a,b,c)*(8-x)*(8-y))+(cm(a+1,b,c)*x*(8-y))+(cm(a,b+1,c)*(8-x)*y)+(cm(a+1,b+1,c)*x*y))/64
              Next
              Plot((a*8)+x,(b*8)+y,RGB(rc(0),rc(1),rc(2)))
            Next
          Next
        Next
      Next
    StopDrawing()
        DisplaySprite(1,0,0)
      For x=0 To mw-1
        For a=0 To 1
          y=lny((x*4)+(a*2)+1)
          If y=>0 And y<=mh
            For b=0 To 1
              DisplayTransparentSprite(0,(x*cw)+ox,((y-b)*ch)+oy,(2-b)*96)
            Next
          EndIf
        Next
      Next
   DisplayTransparentSprite(2,0,0) : FlipBuffers() : cc=(((cc*3)+2)/2)&3 : a=65-(ElapsedMilliseconds()-t)
    If a<0
      a=0
    EndIf
    Delay(a)
  Else
    ct=ct-1
  EndIf
Until KeyboardPushed(-1) Or IsScreenActive()=0
End
 


_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Сб апр 05, 2014 5:31 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
kvitaliy писал(а):
Тогда тебе для затравки, совсем короткий код ( конкурсные PurePunch 100 строк)
[code]; код для 5.2*, ниже работать не будет или менять на на 3D спрайты


Мда, спасибо, утерся :D

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн дек 26, 2016 12:29 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1576
Откуда: Алматы
Благодарил (а): 12 раз.
Поблагодарили: 39 раз.
Пункты репутации: 5
понадобился шрифт, которого может и не быть на стороне клиента. помню что раньше помогла команда:
AddFontMemResourceEx_(?font, ?end_font - ?font, 0, @"1")
LoadFont(#AboutFont, "Fixedsys Excelsior 3.01", 17)

то есть шрифт складывался в датасекцию, после оттуда читался и можно было пользоваться. однако что-то я не понял с этим последним параметром @"1" - затык в том, что теперь во всех полях, где есть символ 1 - вместо 1 квадратик.

https://msdn.microsoft.com/en-us/library/windows/desktop/dd183325(v=vs.85).aspx

pcFonts [in]
A pointer to a variable that specifies the number of fonts installed.

так что он от меня хочет то?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн дек 26, 2016 7:29 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6220
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
SereZa писал(а):
помню что раньше помогла команда:
AddFontMemResourceEx_(?font, ?end_font - ?font, 0, @"1")

А что изменилось, версия Пурика или система?
Вообще по описанию, да и по тому как в других ЯП эта функция используется, тут указатель на переменную типа Integer, который указывает кол-во шрифтов, т.е их может быть несколько.
У тебя в коде указатель на строку, почему в Пурике это работает :D
А если попробовать как написано
типа
Код:
1
2
 n.i=1
 AddFontMemResourceEx_(?font, ?end_font - ?font, 0, @n)


_________________
read-only


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пн дек 26, 2016 11:51 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1576
Откуда: Алматы
Благодарил (а): 12 раз.
Поблагодарили: 39 раз.
Пункты репутации: 5
о! помогло спасибо :) теперь 1 как 1, а не квадратик на формах, хотя этот шрифт я вовсе не выставлял для этих форм. он был нужен для графики - титры в окне about.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB