purebasic.info

PureBasic forum
Текущее время: Вс сен 23, 2018 8:24 am

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




Начать новую тему Ответить на тему  [ Сообщений: 150 ]  На страницу 1, 2, 3, 4, 5 ... 10  След.
Автор Сообщение
 Заголовок сообщения: Работа с изображениями
СообщениеДобавлено: Пн май 02, 2011 10:18 am 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
мне нужно что бы пользователь мог выбрать какое изображение появилось на экране. я с гаджетами плохо знаком по этому прошу помощи.
можно OptionGadget или ComboBoxGadget.
и что бы после выбора картинки она сразу появлялась, заранее спасибо


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 11:34 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
aristov-96 писал(а):
можно OptionGadget или ComboBoxGadget.

В справке га каждый гаждет написано с помощью каких функций с ним взаимодействовать и приведен как минимум они пример.

aristov-96 писал(а):
ComboBoxGadget

Код:
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
Procedure.s GetSysDir()
  Protected Result.s="", len, Char.s
  Result=Space(#MAX_PATH)
  Len=GetSystemDirectory_(@Result, #MAX_PATH)
  Result=Left(Result, Len)
  Char=Right(Result,1)
  If Char<>"" Or Char<>"/"
    Result+""
  EndIf
  ProcedureReturn Result
EndProcedure
 
SystemDir.s = GetSysDir()
 
OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ComboBoxGadget(0, 10, 10, 250, 21)
For a = 1 To 50
  AddGadgetItem(0, -1,"ComboBox item " + Str(a))
Next
SetGadgetState(0, 0)
ImageGadget(1,100,80,32,32,0)  
 
Repeat
  Event=WaitWindowEvent()
 
  If Event = #PB_Event_Gadget
    If EventGadget() = 0
      If EventType()=1 ; Выпадающий список закрылся.
        Pos = GetGadgetState(0) ; Номер пункта, выбаного в списке.
        ImageID = ExtractIcon_(0,SystemDir+"Shell32.dll",Pos)
        SetGadgetState(1, ImageID)
      EndIf
    EndIf
  EndIf
 
Until Event = #PB_Event_CloseWindow


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 11:44 am 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
спасибо, а можно тут указать папку из которой картинки будут браться?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 11:50 am 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Можно, только их нужно будет загружать с помощью LoadImage, а не как в примере, брать из ресурсов DLL.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 12:09 pm 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
блин не понимаю где в коде грузить LoadImage.
вот например есть путь к папке ProgPath.s=GetPathPart(ProgramFilename())
мне надо все картинки из этой папки были в этом гаджете и отображались


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 12:15 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
aristov-96 писал(а):
мне надо все картинки из этой папки были в этом гаджете и отображались
Одновременно?
У картинок всегда одинаковые имена или они могут быть разные?


aristov-96 писал(а):
блин не понимаю где в коде грузить LoadImage.
Здесь:
Код:
1
2
3
        Pos = GetGadgetState(0) ; Номер пункта, выбаного в списке. 
         ImageID = LoadImage(0, ProgPath+"Image.bmp")
         SetGadgetState(1, ImageID)


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 12:34 pm 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
Одновременно?

нет, прям как в коде только папка другая
Пётр писал(а):
У картинок всегда одинаковые имена или они могут быть разные?

всегда разные


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 1:41 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11255
Благодарил (а): 4 раз.
Поблагодарили: 429 раз.
Код:
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
UseJPEGImageDecoder()
UsePNGImageDecoder()
 
 
ProgPath.s = GetPathPart(ProgramFilename())
 
 OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
 ComboBoxGadget(0, 10, 10, 250, 21)
 
 If ExamineDirectory(0, ProgPath, "*.*")
   While NextDirectoryEntry(0)
     If DirectoryEntryType(0) = #PB_DirectoryEntry_File
       FileName.s=DirectoryEntryName(0)
       Extension.s=LCase(GetExtensionPart(FileName))
       If Extension="bmp" Or Extension="jpg" Or Extension="png" Or Extension="ico"
         AddGadgetItem(0, -1, FileName)
       EndIf
     EndIf
   Wend
   FinishDirectory(0)
 EndIf
 
 
 SetGadgetState(0, 0)
 ImageGadget(1,100,80,32,32,0)  
 
 Repeat
   Event=WaitWindowEvent()
   
   If Event = #PB_Event_Gadget
     If EventGadget() = 0
       If EventType()=1 ; Выпадающий список закрылся.
          Pos = GetGadgetState(0) ; Номер пункта, выбаного в списке.
          ImageID = LoadImage(0, ProgPath+GetGadgetItemText(0, Pos) )
          SetGadgetState(1, ImageID)
       EndIf
     EndIf
   EndIf
   
 Until Event = #PB_Event_CloseWindow


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 4:39 pm 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
спасибо но почему-то он выводит одно изображение с именем пользователя компьютера и его иконкой. с чем может быть связано?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 4:47 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс апр 25, 2010 4:06 pm
Сообщений: 227
Откуда: Кіровоград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
С тем, что твоя программа создается в каталоге, где есть только эта картинка. Сохрани код в папке с картинками и попробуй снова

_________________
Всё возможно. Нужно только найти способ...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 4:51 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс апр 25, 2010 4:06 pm
Сообщений: 227
Откуда: Кіровоград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Цитата:
В EXE есть UseJPEGImageDecoder()?


:D Мда, надо было же такую оплошность сделать...

_________________
Всё возможно. Нужно только найти способ...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 4:52 pm 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
создал exe файл в папке с картинками bmp, там вообще не из чего выбирать, пустой гаджет


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 4:56 pm 
Не в сети
док

Зарегистрирован: Вт мар 22, 2011 6:48 pm
Сообщений: 105
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
всё работает jpg поменял на jpeg


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 5:14 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6382
Благодарил (а): 20 раз.
Поблагодарили: 198 раз.
Пункты репутации: 48
Sungmaster писал(а):
Мда, надо было же такую оплошность сделать...

Сам часто натыкаюсь на эти грабли :D Так а в чем было преимущество разместить изображения в DLL? Кроме как многократного использования с разными ЕХЕ ни чего не приходит в голову.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 02, 2011 5:19 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Вс апр 25, 2010 4:06 pm
Сообщений: 227
Откуда: Кіровоград
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Я делаю программу, которая будет определять маршрут. Но программу под каждый город переделывать глупо, отдельно размещать файлы в некотором роде даже опасно (испортить могут), сунуть в архив - ОЧЕНЬ долго ждать, пока разберет. Поэтому DLL - самый оптимальный вариант

_________________
Всё возможно. Нужно только найти способ...


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 150 ]  На страницу 1, 2, 3, 4, 5 ... 10  След.

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


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

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


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

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