Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/1078: Рейтинг темы: голосов - 1078, средняя оценка - 4.97
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502

PureBasic

13.03.2009, 15:00. Показов 239169. Ответов 1214

Студворк — интернет-сервис помощи студентам
Есть такая замечательная разновидность диалекта бейсика именуемая PureBasic.
Сайт разработчика http://www.purebasic.com/
Рускоязычное зеркало http://pbasic.spb.ru/

Как и любой другой бейсик он прост в освоении.
Заточен полностью под винду.
С его помощью можно разрабатывать консольные, окнонные (с поддержкой стиля XP) и игровые программы.
При этом не нужно знать как работает комп или искать инфу по API функциям, т. к. есть более 800 встроеных функций различного назначения, которых в большенстве случаев достаточно чтобы написать не сложную прогу. При необходимости можно использовать API (есть встроеная поддержка) или ассемблерные вставки. При необходимости можно добавить в среду дополнительные функции из внешних библиотек, большой выбор которых есть на страничке http://www.purearea.net/pb/english/userlibs.php

Вот простоейший пример программы отображающей надпись в окне
PureBasic
1
2
3
4
5
6
7
8
9
; Открываем окно
OpenWindow(1,200,250,300,50,"Заголовок окна",#PB_Window_MinimizeGadget)
CreateGadgetList(WindowID(1)) ; Создаём новый список гаджетов
TextGadget(2,80,20,180,15,"Демонстрационная программа") ;Отображаем текст
 
Repeat ; Начало главного цикла Repeat-Until
 Event=WaitWindowEvent() ; Получаем текущий идентификатор события
Until Event=#PB_Event_CloseWindow ; Прерываем цикл при попытке закрыть окно (щелчёк по крестику в заголовке окна)
End ; Завершаем работу программы
Размер скомпилированого файла всего 14КБ!

В архиве есть парочка примеров.

Высказывайте выше мнение об PureBasic
Вложения
Тип файла: rar Примеры_PB_1.rar (39.3 Кб, 2368 просмотров)
9
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2009, 15:00
Ответы с готовыми решениями:

PureBasic 4.60
Пару дней назад вышла версия 4.60. Демо версии можно скачать на официальном сайте http://purebasic.com/download.php В этой версии...

Purebasic и AV
Добрый день, скажите почему Антивирусы так не любят пурик? достаточно 1 команды например rename() и все сразу детект 5 антивирусами на...

Purebasic 5.0 + html
Как использовать PB в web разработке ? Возможно ли применить его вместо JS и PHP ? Откликнитесь кто знает ответ !

1214
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
06.10.2010, 16:44  [ТС]
Студворк — интернет-сервис помощи студентам
Выше уже писал https://www.cyberforum.ru/basi... ost1006412
Code
1
AddButton(Number, X, Y, ImageFileUp, ImageFileDown)
Добавлять там же, где находятся остальные вызовы этой процедуры. Главное чтобы иднтификаторы кнопок (Number) не повторялись.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
06.10.2010, 17:38
а в этой программе можно будет так что при нажатии на кнопку грузил картинку по центру на неё 3 кнопки и при нажатии на 1 из них все картинки закрывались и кнопки тоже если просто сделать так
Добавить при нажатии на кнопку PlayMovie что бы картинку вывести потом можно тоже PlayMovie что бы кнопки вывести потом StopMovie столько раз сколько кнопок и картинок только идентификаторы менять?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
06.10.2010, 17:43  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
а в этой программе можно будет так что при нажатии на кнопку грузил картинку по центру на неё 3 кнопки...
Все это сделать можно.
Главное правильно составить программу.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
06.10.2010, 19:20
как бы смотри тут же надо спрайт создать
PureBasic
1
2
3
4
CreatSprite(6,MovieWidth(0), MovieHeight(0)) ; затем
LoadMovie(6, ProgPath+"pic5.bmp") ; ну тут наверно идентификатор другой надо точно не знаю
; а в процедуре надо
PlayMovie(6,ScreenID()) ; вроде так?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
06.10.2010, 19:40  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
как бы смотри тут же надо спрайт создать
Основное назначение библиотеки Movie - воспроизведение видео файлов.
И не совсем рационально использовать её для отображения статичных (без анимации) рисунков, коим является рисунок BMP формата.
Лучше сразу загружать рисунок в спрайт функцией LoadSprite
И отображать его функцией DisplaySprite у нужной точке экрана, разместив функцию в главном цикле программы.

Кстати, рисунок может быть не только BMP формата, но и JPG, PNG, TIFF или TGA формата.
Для этого, нужно в начале программы подключить требуемый декодер формата с помощью функций
UseJPEGImageDecoder
UsePNGImageDecoder
UseTIFFImageDecoder
UseTGAImageDecoder
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
06.10.2010, 19:49
о с этими функциями всё получается только сразу закрывается на 0.5 сек появляется и исчезает(
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
06.10.2010, 19:57  [ТС]
Значит что-то не так сделано.
Нужно взглянуть на текущую версию исходника чтобы точно сказать почему так происходит.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
06.10.2010, 19:58
PureBasic
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
Global ProgPath.s=GetPathPart(ProgramFilename())
 
Structure Struct_ButtonInfo
  X.l
  Y.l
  SpriteDown.l
  SpriteUp.l
  ButtonNumber.l
  ButtonState.b
  
  MouseButton_Left.b
  MouseButton_Middle.b
  MouseButton_Right.b
EndStructure
 
Global NewList ButtonInfo.Struct_ButtonInfo()
 
Procedure ButtonClick(ButtonNumber, Type) ; Эта процедура вызывается при клике по кноке.
        If Type=#PB_MouseButton_Left ; По кнопке кликнули левой кнопкой мышки
    Select ButtonNumber
      Case 1 ; Кнопка "Кнопка"
PlayMovie(2,ScreenID())
Case 2 ; Пнопка "Выход из проги"
  PlayMovie(2,ScreenID())
  End
Case 3
  PlayMovie(2,ScreenID())
  DisplaySprite(6,112,200)
      
            EndSelect
    
  ElseIf Type=#PB_MouseButton_Middle  ; По кнопке кликнули средней кнопкой мышки
    
  ElseIf Type=#PB_MouseButton_Right   ; По кнопке кликнули поавой кнопкой мышки
  EndIf
EndProcedure
 
Procedure AddButton(Number, X, Y, FileImageUp.s, FileImageDown.s) ; Добавление кнопки
  AddElement(ButtonInfo())
  ButtonInfo()\X = X
  ButtonInfo()\Y = Y
  ButtonInfo()\ButtonNumber = Number
  ButtonInfo()\SpriteDown = LoadSprite(#PB_Any, FileImageDown)
  ButtonInfo()\SpriteUp   = LoadSprite(#PB_Any, FileImageUp)
  ButtonInfo()\ButtonState = 0
EndProcedure
 
Procedure ButtonEvent(MouseX, MouseY)
  ForEach ButtonInfo()
    
    If ButtonInfo()\ButtonState=1
      If ButtonInfo()\SpriteUp
        DisplaySprite(ButtonInfo()\SpriteUp,ButtonInfo()\X,ButtonInfo()\Y)
        
        If SpriteCollision(0, MouseX, MouseY, ButtonInfo()\SpriteUp, ButtonInfo()\X, ButtonInfo()\Y) = 1 ; Проверка нахождения курсора на спарйте=кнопка
          ButtonInfo()\ButtonState=0
        EndIf
        
      EndIf
    Else
      If ButtonInfo()\SpriteDown
        DisplaySprite(ButtonInfo()\SpriteDown,ButtonInfo()\X,ButtonInfo()\Y)
        
        If SpriteCollision(0, MouseX, MouseY, ButtonInfo()\SpriteDown, ButtonInfo()\X, ButtonInfo()\Y) = 0 ; Проверка нахождения курсора на спарйте=кнопка
          ButtonInfo()\ButtonState=1
        EndIf
        
        If MouseButton(#PB_MouseButton_Left)=1 ; Нажата левая кнопка мышки
          If ButtonInfo()\MouseButton_Left=0
            ButtonInfo()\MouseButton_Left=1
            ButtonClick(ButtonInfo()\ButtonNumber, #PB_MouseButton_Left)
          EndIf
        Else
          ButtonInfo()\MouseButton_Left=0
        EndIf
        If MouseButton(#PB_MouseButton_Middle)=1 ; Нажата средняя кнопка мышки
          If ButtonInfo()\MouseButton_Middle=0
            ButtonInfo()\MouseButton_Middle=1
            ButtonClick(ButtonInfo()\ButtonNumber, #PB_MouseButton_Middle)
          EndIf
        Else
          ButtonInfo()\MouseButton_Middle=0
        EndIf
        If MouseButton(#PB_MouseButton_Right)=1 ; Нажата правая кнопка мышки
          If ButtonInfo()\MouseButton_Right=0
            ButtonInfo()\MouseButton_Right=1
            ButtonClick(ButtonInfo()\ButtonNumber, #PB_MouseButton_Right)
          EndIf
        Else
          ButtonInfo()\MouseButton_Right=0
        EndIf
        
      EndIf
    EndIf
    
  Next
EndProcedure
 
ProgPath.s=GetPathPart(ProgramFilename()) ; Определяем путь к папке, из которой запущена программа
SetCurrentDirectory(ProgPath)
 
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitMovie() = 0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf
 
If LoadMovie(0, ProgPath+"abc.gif") = 0
  MessageRequester("Error", "Нет рисунка", 0)
  End
EndIf     
 
LoadMovie(2, ProgPath.s+"Click3.wav") 
 
If LoadMovie(1, ProgPath+"Guest11.mp3") = 0  ; Загрузка музыки
  MessageRequester("Error", "Нет файла с музыкой", 0)
  End
EndIf 
 
LoadFont(0,"Arial", 30) ; Загрузка шрифта "Arial" с размером 30. Ему присваивается идентификатр 0
 
If OpenScreen(1024,768,16,"") ; Переход в полноэкранный ражим, с параметрами 1024х768, 16 бит
  SetFrameRate(60)
  MouseLocate(1024/2, 768/2) ; Расположение курсора мышки в середине экрана
  TransparentSpriteColor(-1,RGB(255,0,255))
  CatchSprite(0,?Cursor)
 
  AddButton(1, 10, 10, "pic1.bmp", "pic2.bmp")
  AddButton(2, 900, 10, "выход из проги_0.bmp", "выход из проги_1.bmp")
  AddButton(3, 10, 100, "pic3.bmp", "pic4.bmp")
 
  
   
  CreateSprite(1,MovieWidth(0), MovieHeight(0))
  PlayMovie(0,#PB_Movie_Rendered)
  
  MovieAudio(1,20,0) ; Установка громкости воспроизведения музыки (1-100)
  PlayMovie(1,ScreenID()) ; Воспроизведение музыки
 
  ButtonExitState=0
  ButtonGadget=0
    Repeat ; Главный цикл программы
    AnimStep+1
    ClearScreen(RGB(255, 255, 255)) ; Очитска экрана, заполнением его темно-зеленым цветом
    RenderMovieFrame(0, SpriteID(1))
    DisplaySprite(1,20,20)
      
    If StartDrawing(ScreenOutput()) ; Начало рисования по экрану
      DrawingFont(FontID(0))        ; Используемый шрифт
      DrawingMode(#PB_2DDrawing_Transparent) ; При рисовании, будет прозрачный фон у надписи
      StopDrawing() ; Завершение рисования
    EndIf
          
     If MovieStatus(1) = 0 ; Если закончилось воспроизведение мызыки
       PlayMovie(1,ScreenID()) ; то повторяем его с начала
     EndIf
     
     ExamineMouse() ; Опрос состояния мышки
    
     MX=MouseX()  ; Текущие координаты мышки
     MY=MouseY()
     
     ButtonEvent(MX, MY)
     
     DisplayTransparentSprite(0,MX,MY) ; Отображение спрайта в позиции, опередяемой координатами мышки
     
    FlipBuffers() ; Отображение на эуране буфера, по которому рисовали
    ExamineKeyboard() ; Опрос кнопок клавиатуры
    
    
LoadSprite(6, ProgPath+"pic5.bmp", 0)
    
  Until KeyboardPushed(#PB_Key_Escape) ; Прерывание цикла при нажатии на кнопку Esc на клавиатуре
  
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End
 
 DataSection
   Cursor:
   IncludeBinary "Cursor.bmp" 
 EndDataSection
ну типо вот))
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
06.10.2010, 20:22  [ТС]
Как я понял, нужно при клике по кнопке, нужно загрузить картинку и отобразить ее на экране.

В главном цикле должна быть функция DisplaySprite, отображающая спрайт на экране, а функция LoadSprite должна быть в обработчике кликов по кнопкам. Сейчас же наоборот.

PureBasic
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
Global ProgPath.s=GetPathPart(ProgramFilename())
SetCurrentDirectory(ProgPath)
 
Structure Struct_ButtonInfo
  X.l
  Y.l
  SpriteDown.l
  SpriteUp.l
  ButtonNumber.l
  ButtonState.b
  
  MouseButton_Left.b
  MouseButton_Middle.b
  MouseButton_Right.b
EndStructure
 
Global NewList ButtonInfo.Struct_ButtonInfo()
 
Procedure ButtonClick(ButtonNumber, TYPE) ; Эта процедура вызывается при клике по кноке.
  If TYPE=#PB_MouseButton_Left ; По кнопке кликнули левой кнопкой мышки
    Select ButtonNumber
      Case 1 ; Кнопка "Кнопка"
        PlayMovie(2,ScreenID())
      Case 2 ; Пнопка "Выход из проги"
        PlayMovie(2,ScreenID())
        End
      Case 3
        PlayMovie(2,ScreenID())
        LoadSprite(6, ProgPath+"pic5.bmp", 0)
                
    EndSelect
    
  ElseIf TYPE=#PB_MouseButton_Middle  ; По кнопке кликнули средней кнопкой мышки
    
  ElseIf TYPE=#PB_MouseButton_Right   ; По кнопке кликнули поавой кнопкой мышки
  EndIf
EndProcedure
 
Procedure AddButton(Number, X, Y, FileImageUp.s, FileImageDown.s) ; Добавление кнопки
  AddElement(ButtonInfo())
  ButtonInfo()\X = X
  ButtonInfo()\Y = Y
  ButtonInfo()\ButtonNumber = Number
  ButtonInfo()\SpriteDown = LoadSprite(#PB_Any, FileImageDown)
  ButtonInfo()\SpriteUp   = LoadSprite(#PB_Any, FileImageUp)
  ButtonInfo()\ButtonState = 0
EndProcedure
 
Procedure ButtonEvent(MouseX, MouseY)
  ForEach ButtonInfo()
    
    If ButtonInfo()\ButtonState=1
      If ButtonInfo()\SpriteUp
        DisplaySprite(ButtonInfo()\SpriteUp,ButtonInfo()\X,ButtonInfo()\Y)
        
        If SpriteCollision(0, MouseX, MouseY, ButtonInfo()\SpriteUp, ButtonInfo()\X, ButtonInfo()\Y) = 1 ; Проверка нахождения курсора на спарйте=кнопка
          ButtonInfo()\ButtonState=0
        EndIf
        
      EndIf
    Else
      If ButtonInfo()\SpriteDown
        DisplaySprite(ButtonInfo()\SpriteDown,ButtonInfo()\X,ButtonInfo()\Y)
        
        If SpriteCollision(0, MouseX, MouseY, ButtonInfo()\SpriteDown, ButtonInfo()\X, ButtonInfo()\Y) = 0 ; Проверка нахождения курсора на спарйте=кнопка
          ButtonInfo()\ButtonState=1
        EndIf
        
        If MouseButton(#PB_MouseButton_Left)=1 ; Нажата левая кнопка мышки
          If ButtonInfo()\MouseButton_Left=0
            ButtonInfo()\MouseButton_Left=1
            ButtonClick(ButtonInfo()\ButtonNumber, #PB_MouseButton_Left)
          EndIf
        Else
          ButtonInfo()\MouseButton_Left=0
        EndIf
        If MouseButton(#PB_MouseButton_Middle)=1 ; Нажата средняя кнопка мышки
          If ButtonInfo()\MouseButton_Middle=0
            ButtonInfo()\MouseButton_Middle=1
            ButtonClick(ButtonInfo()\ButtonNumber, #PB_MouseButton_Middle)
          EndIf
        Else
          ButtonInfo()\MouseButton_Middle=0
        EndIf
        If MouseButton(#PB_MouseButton_Right)=1 ; Нажата правая кнопка мышки
          If ButtonInfo()\MouseButton_Right=0
            ButtonInfo()\MouseButton_Right=1
            ButtonClick(ButtonInfo()\ButtonNumber, #PB_MouseButton_Right)
          EndIf
        Else
          ButtonInfo()\MouseButton_Right=0
        EndIf
        
      EndIf
    EndIf
    
  Next
EndProcedure
 
 
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitMovie() = 0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf
 
If LoadMovie(0, ProgPath+"abc.gif") = 0
  MessageRequester("Error", "Нет рисунка", 0)
  End
EndIf     
 
LoadMovie(2, ProgPath.s+"Click3.wav") 
 
If LoadMovie(1, ProgPath+"Guest11.mp3") = 0  ; Загрузка музыки
  MessageRequester("Error", "Нет файла с музыкой", 0)
  End
EndIf 
 
LoadFont(0,"Arial", 30) ; Загрузка шрифта "Arial" с размером 30. Ему присваивается идентификатр 0
 
If OpenScreen(1024,768,16,"") ; Переход в полноэкранный ражим, с параметрами 1024х768, 16 бит
  SetFrameRate(60)
  MouseLocate(1024/2, 768/2) ; Расположение курсора мышки в середине экрана
  TransparentSpriteColor(-1,RGB(255,0,255))
  CatchSprite(0,?Cursor)
  
  AddButton(1, 10, 10, "pic1.bmp", "pic2.bmp")
  AddButton(2, 900, 10, "выход из проги_0.bmp", "выход из проги_1.bmp")
  AddButton(3, 10, 100, "pic3.bmp", "pic4.bmp")
  
  
  
  CreateSprite(1,MovieWidth(0), MovieHeight(0))
  PlayMovie(0,#PB_Movie_Rendered)
  
  MovieAudio(1,20,0) ; Установка громкости воспроизведения музыки (1-100)
  PlayMovie(1,ScreenID()) ; Воспроизведение музыки
  
  ButtonExitState=0
  ButtonGadget=0
  Repeat ; Главный цикл программы
    AnimStep+1
    ClearScreen(RGB(255, 255, 255)) ; Очитска экрана, заполнением его темно-зеленым цветом
    RenderMovieFrame(0, SpriteID(1))
    DisplaySprite(1,20,20)
    
    If StartDrawing(ScreenOutput()) ; Начало рисования по экрану
      DrawingFont(FontID(0))        ; Используемый шрифт
      DrawingMode(#PB_2DDrawing_Transparent) ; При рисовании, будет прозрачный фон у надписи
      StopDrawing() ; Завершение рисования
    EndIf
    
    If MovieStatus(1) = 0 ; Если закончилось воспроизведение мызыки
      PlayMovie(1,ScreenID()) ; то повторяем его с начала
    EndIf
    
    ExamineMouse() ; Опрос состояния мышки
    
    MX=MouseX()  ; Текущие координаты мышки
    MY=MouseY()
    
    ButtonEvent(MX, MY)
    
    If IsSprite(6)             ; Если такой спрайт существует
      DisplaySprite(6,112,200) ; то отображаем его не экране
    EndIf
    
    DisplayTransparentSprite(0,MX,MY) ; Отображение спрайта в позиции, опередяемой координатами мышки
    
    FlipBuffers() ; Отображение на эуране буфера, по которому рисовали
    ExamineKeyboard() ; Опрос кнопок клавиатуры 
    
  Until KeyboardPushed(#PB_Key_Escape) ; Прерывание цикла при нажатии на кнопку Esc на клавиатуре
  
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End
 
DataSection
  Cursor:
  IncludeBinary "Cursor.bmp" 
EndDataSection
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
07.10.2010, 05:37
Слушай а что бы убрать изображение надо stopsprite использовать?!?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.10.2010, 14:24  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
надо stopsprite использовать
В справке все написано.
Например, откроем описание функции LoadSprite, которая создает спрайт из рисунка.
Смотрим
Code
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
Syntax
 
Result = LoadSprite(#Sprite, Filename$ [, Mode])
Description
 
Load the specified sprite into memory for immediate use. If #PB_Any is used as '#Sprite' parameter, the new sprite number will be returned as 'Result'. 
 
The sprite can be in BMP format (1 bit, 4 bits, 8 bits, 16 bits, 24 bits or 32 bits color depth, in uncompressed (non RLE) form) or any other format supported by the ImagePlugin library. 
 
A screen should be opened with OpenScreen() or OpenWindowedScreen() before loading a sprite. 
 
If an error occurs the value 0 is returned, otherwise the sprite was loaded successfully. A loaded sprite can be freed by using the FreeSprite() function. The following functions can be used to enable automatically more image formats: 
 
UseJPEGImageDecoder() 
UseJPEGImage2000Decoder() 
UsePNGImageDecoder() 
UseTIFFImageDecoder() 
UseTGAImageDecoder() 
 
The 'Mode' parameter is optional and can take the following values (also combined with the '|' operator): 
  0                       : Default mode. Sprite resides in video memory (if possible)
  #PB_Sprite_Memory       : Sprite is loaded into main PC memory (for SpecialFX)
  #PB_Sprite_Alpha        : Sprite is 8 bits grayscale and will be used by DisplayAlphaSprite() or DisplayShadowSprite()
  #PB_Sprite_Texture      : Sprite is created with 3D support - useful for the CreateSprite3D() function of the Sprite3D library.
  #PB_Sprite_AlphaBlending: Sprite is created with per pixel alpha-channel support, the image format has to support it (only 
                            PNG and TIFF for now). The #PB_Sprite_Texture needs to be specified as well, and the sprite 
                            has to be displayed with DisplaySprite3D().
 
Note: Sprites shouldn't be larger than the used screenmode. Using larger sprites possibly works on some hardware, on others not. Better split your large sprite to several smaller ones. 
 
When using 8 bits screenmode (256 colors, palettized), only 8bits BMP are accepted as sprite format. The ImagePlugins or other BMP color formats aren't supported.
Там же написано A loaded sprite can be freed by using the FreeSprite() function

PS
В справке все отсортировано по разделам.
Функции относящеися к полоноэкранному режиму без использования 3D движка, ноходятся в разделах Sprite и Sprite3D
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
07.10.2010, 17:36
слушай а как сделать что бы при нажатии на кнопку(после case 3) открывалась ещё одна кнопка а при нажатии на неё она закрывалась?)

Добавлено через 29 минут
хотя слушай я сам щас напишу не надо)
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.10.2010, 18:17  [ТС]
слушай а как сделать что бы при нажатии на кнопку(после case 3) открывалась ещё одна кнопка а при нажатии на неё она закрывалась?)
Сначала кнопку нужно создать с помощью AddButton
Далее, в при клике по кнопке, ее нужно удалить.
Вот процедура удаления кнопки
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Procedure DelButton(Number)
  ForEach ButtonInfo()
    If ButtonInfo()\ButtonNumber = Number
      If IsSprite(ButtonInfo()\SpriteDown)
        FreeSprite(ButtonInfo()\SpriteDown)
      EndIf
      If IsSprite(ButtonInfo()\SpriteUp)
        FreeSprite(ButtonInfo()\SpriteUp)
      EndIf
      DeleteElement(ButtonInfo())
      Break
    EndIf
  Next
EndProcedure
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
07.10.2010, 18:36
я понял что создать с помощью AddButton но проблема в том что мне надо по клике другой кнопки добавить эту кнопку, а за процедуру закрытие биг спс
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.10.2010, 18:48  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
но проблема в том что мне надо по клике другой кнопки добавить эту кнопку
Цитата Сообщение от aristov-96 Посмотреть сообщение
нажатии на кнопку(после case 3) открывалась ещё одна кнопка
Вот добавь после case 3, вызов функции AddButton.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
07.10.2010, 19:10
выводит ту же ошибку что и на Beep((
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.10.2010, 19:23  [ТС]
Добавь в начало программы эти строки
PureBasic
1
2
3
4
Declare ButtonClick(ButtonNumber, Type)
Declare AddButton(Number, X, Y, FileImageUp.s, FileImageDown.s)
Declare ButtonEvent(MouseX, MouseY)
Declare DelButton(Number)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
07.10.2010, 20:17
а вот смотри
PureBasic
1
2
3
4
5
 Case 7
        PlayMovie(2,ScreenID()) ; тут же играет при нажатии
        FreeSprite(6) ; а тут закрывает
        DelButton(7) ; сразу
    EndSelect
Добавлено через 6 минут
может условие создать например If mousebutton я точно не знаю как работет просто виде если нажал левую кнопку то идёт закрытие так можно?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
07.10.2010, 20:28  [ТС]
вот смотри
Да, примерно так.

может условие создать например If mousebutton я точно не знаю как работет просто виде если нажал левую кнопку то идёт закрытие так можно?
Этот код уничтожит спрайт рисунка и саму кнопку при клике по ней левой кнопкой мышки.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
07.10.2010, 20:32
однако он сразу уничтожает сразу после нажатия на первую кнопку выводит на 0.5 сек и исчезает(

Добавлено через 2 минуты
ооо если так сделать
PureBasic
1
2
3
4
5
PlayMovie(2,ScreenID())
        If MouseButton(7)
        FreeSprite(6)
        DelButton(7)
        EndIf
то всё норм)) я в справке по искал))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2010, 20:32

Возможности PureBasic
PureBasic Shaders Clothes Simulation Physics Демонстрация тестовой версии игры Домино3D Онлайн Демо Версия Меню SDP...

Изучать ли purebasic?
Здравствуйте. У меня такие цели, подскажите пожалуйста подойдет ли purebasic для них: 1. создание оконных приложений на только windows,...

Литература по PureBasic
Небольшая подборка учебников и обучающих материалов на русском. Она будет полезна тем, кто только начинает изучать язык PureBasic.

Из vbs в purebasic
Если есть, кто может помочь с переводом из vbs в purebasic, то просьба помочь. Нужно перевести код из скрипта vbs в код purebasic. Код...

Sound в PureBasic
Приветствую всех. Когда-то, очень давно, на cyberforum была моя тема о выборе бейсика для написания звуковой игры. Для информации: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru