FreeBasic
Главная
Вход
Регистрация
Вторник, 12.11.2024, 22:02Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Загрузка значков (икононок)
sashasoldДата: Среда, 29.07.2020, 09:04 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 41
Репутация: 0
Статус: Offline
Возник вопрос по иконкам
Вобщем как я увидел и прочел, внутри файла иконки находятся несколько независимых изображений
В библиотеке w9, да и в API, не увидел параметра на указание номера загружаемого изображерия, как загрузить нужное?


Сообщение отредактировал sashasold - Среда, 29.07.2020, 09:08
 
haavДата: Среда, 29.07.2020, 13:16 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Репутация: 49
Статус: Offline
Цитата sashasold ()
Возник вопрос по иконкам
Вобщем как я увидел и прочел, внутри файла иконки находятся несколько независимых изображений
В библиотеке w9, да и в API, не увидел параметра на указание номера загружаемого изображерия, как загрузить нужное?


Код
#include "window9.bi"

Dim As HICON iconSmall , iconLarge

Dim As integer iEvent

iconLarge = LoadImage(0 , "1.ico", IMAGE_ICON , 256 , 256 , LR_LOADFROMFILE)

iconSmall = LoadImage(0 , "1.ico", IMAGE_ICON , 32 , 32 , LR_LOADFROMFILE)

OpenWindow("",300,10,400,400)

ButtonImageGadget(1,10,10,280,280,iconLarge, BS_ICON)

ButtonImageGadget(2,310,10,50,50,iconSmall, BS_ICON)

Do
   
   iEvent=WaitEvent()
   
   If iEvent=EventClose Then End
   
Loop


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
sashasoldДата: Четверг, 30.07.2020, 07:23 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 41
Репутация: 0
Статус: Offline
Ага, значит функция загрузки определяет размер созданного изображения, и загружает иконку такого же или меньшего размера

Вот еще вопрос как это изображение положить в формат изображения FB?
Для использования его со стандартными функциями вставки (put)
Api функции сложноваты для меня=)
 
haavДата: Четверг, 30.07.2020, 10:18 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Репутация: 49
Статус: Offline
Цитата sashasold ()
Вот еще вопрос как это изображение положить в формат изображения FB?


Форматом иконок я не интересовался. Простых средств не знаю. Могу лишь подкинуть направление. По линкам ниже на других языках программирования есть коды сохранения иконок. Перед сохранением , все потроха иконок (инфа о цветности, размеры, буфер с пикселями и пр.) должны быть в наличии. Ну а имею всю инфу, дальше думать как преобразовать в формат FB. Возможно эти коды содержат ошибки, тут уж надо самому до всего доходить. Формат иконок наверное изучить придется. В общем, если есть желание , вот ссылки:

http://delphimaster.net/view/1-1166694594

https://www.purebasic.fr/english....aveicon


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
sashasoldДата: Четверг, 30.07.2020, 11:21 | Сообщение # 5
Лейтенант
Группа: Пользователи
Сообщений: 41
Репутация: 0
Статус: Offline
Ну посмотрю вечером
Хотя я не про вот что: после загрузки функцией Api, формат уже загрженного изображения никак не приводится к формату FB ?
И еще про задний фон иконок спросить, через FreeImage смог ее загрузить, отображается череый фон никак не могу изменить...
 
zamabuvaraeuДата: Четверг, 30.07.2020, 12:31 | Сообщение # 6
Подполковник
Группа: Друзья
Сообщений: 149
Репутация: 5
Статус: Offline
Рекомендую сконвертировать все значки в BMP и загружать его.
 
haavДата: Четверг, 30.07.2020, 12:39 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Репутация: 49
Статус: Offline
Цитата sashasold ()
Хотя я не про вот что: после загрузки функцией Api, формат уже загрженного изображения никак не приводится к формату FB ?


Как-то некорректно задан вопрос. Думаю "не" в первом предложении лишнее? Если так, то я уже ответил. Могу дополнить.

Для того чтобы привести данные изображения\иконки , загруженного с помощью LoadImage к формату FB.image , нужно:

1) Получить хендл изображения\иконки c помощью LoadImage
2) Получить буфер пикселей с помощью других API (см. ссылки , что я привел выше)
3) Преобразовать формат пикселей (если это будет необходимо) к формату пикселей FB.image
4) Прикрутить этот буфер к изображению FB.image

Я могу привести пример, где это проделывается с изображениями, загруженными с помощью GDI+:
http://users.freebasic-portal.de/freebasicru/gdiplusgfx.html
Как этот пример будет работать с иконками , не знаю. По идее GDI+ должна загружать иконки, вот только какого размера будут иконки...


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
sashasoldДата: Понедельник, 03.08.2020, 01:56 | Сообщение # 8
Лейтенант
Группа: Пользователи
Сообщений: 41
Репутация: 0
Статус: Offline
Итак
1. Твой код у меня не работает ))

Код
#include "window9.bi"

Dim As HICON iconSmall , iconLarge

Dim As integer iEvent

iconLarge = LoadImage(0 , "1.ico", IMAGE_ICON , 256 , 256 , LR_LOADFROMFILE)
iconSmall = LoadImage(0 , "1.ico", IMAGE_ICON , 32 , 32 , LR_LOADFROMFILE)

OpenWindow("",300,10,400,400)
ButtonImageGadget(1,10,10,280,280,iconLarge, BS_ICON)
ButtonImageGadget(2,310,10,50,50,iconSmall, BS_ICON)

Do
   iEvent=WaitEvent()
   If iEvent=EventClose Then End
Loop



2. Удалось отобразить иконки через IconDraw

Код
#include "window9.bi"

Dim As HICON iconSmall , iconLarge

Dim As integer iEvent
Dim hwnd As hwnd
iconLarge = LoadImage(0 , "1.ico", IMAGE_ICON , 256 , 256 , LR_LOADFROMFILE)
iconSmall = LoadImage(0 , "1.ico", IMAGE_ICON , 32 , 32 , LR_LOADFROMFILE)

hwnd=OpenWindow("",300,10,400,400)
'ButtonImageGadget(1,10,10,280,280,iconLarge, BS_ICON)
'ButtonImageGadget(2,310,10,50,50,iconSmall, BS_ICON)

WindowStartDraw(hwnd)
   IconDraw(100,100,iconLarge)
   IconDraw(50,50,iconLarge)
   'FillRectDraw(0,0,&hffffff)
StopDraw

Do
   iEvent=WaitEvent()
   If iEvent=EventClose Then End
Loop



но, как видно LoadImage грузит их в одинаковом размере. т.е. не работает как надо (по крайней мере у меня, ну как обычно=) )
Win7 64bit
3. Нашел вот статью, поковыряю иконки на днях
http://www.comprice.ru/articles/detail.php?ID=42603
хотя странно что нет нормальных, распрастраненных средств...
Прикрепления: 4762616.png (17.5 Kb) · 2440635.png (21.8 Kb)


Сообщение отредактировал sashasold - Понедельник, 03.08.2020, 02:01
 
haavДата: Понедельник, 03.08.2020, 06:39 | Сообщение # 9
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Репутация: 49
Статус: Offline
Цитата
Итак
1. Твой код у меня не работает ))


У меня работает. Ты либо запускал код , не имея рядом иконку. Либо используешь не самую последнюю версию библиотеки.

Цитата
Удалось отобразить иконки через IconDraw


Да, она отображает , но сама по себе эта функция в своей основе имеет API из первых виндоузов , когда иконки имели как правило размеры 16х16 , 32х32. Возможно она просто не умеет работать с иконками большого размера или же заточена четко под определенный размер.

Цитата
хотя странно что нет нормальных, распрастраненных средств...


Ничего странного. Иконки не настолько часто используемые компоненты, чтобы им уделяли так много внимания. А там где они используются (в заголовках окон, кнопках, listview ...) , там поддержка иконок на уровне несложных WINAPI нормально реализована.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
  • Страница 1 из 1
  • 1
Поиск: