:: Visual Foxpro, Foxpro for DOS
Размер иконки в кнопке
Magellan
Автор
Прошу прощения за дурацкий вопрос, наверняка были ответы, но я честно поискал и не нашел...

VFP9
Понадобилось мне вдруг в командные кнопки вставить картинку (ico-файл), никогда этим не занимался а тут вдруг начал
указываю в кнопке picture - такая-то ico, размер которой 16х16 c цветом 32bit. И вижу что размер ее в кнопке отображается в 2 или 3 раза больше чем 16х16, что за... менял всякие свойства... все равно

где жамкнуть, чтобы размер иконки в кнопке был заявленный 16х16?
да, еще - количство иконок в файле -1
пробовал засунуть и меньшей глубиной цвета - такая же...###
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
самсон
можно бмп засунуть
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
можна и БМП конечно... только для прозрачных областей надо маску рисовать... а если иха много? а если разный фон у кнопок? или он меняется в зависимости от цветовой схемы (а у меня именно так и есть) ? лучше и икошками раобраться
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Aries

Сообщений: 4349
Откуда: Николаев
Дата регистрации: 24.12.2002
белый фон в БМП на кнопке будет прозрачным




------------------
Я бы переписал жизнь, но Бог не дает мне исходники (с)
==============================
Злостный линуксоид!
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Magellan!

GIF тоже имеет прозрачность...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
Картинка GIF отображается в кнопке с белым цветом там, где должна быть прозрачность. Прозрачность проверил в фотошопе - есть. Проверил отображение иконок и гифов в VFP5, 7, 8, 9 - во всех фокс не умеет отображать прозрачный цвет и с иконками еще и какой-то стретч творит.... Вот это да... :puke: Вот разработчикам надо задать вопрос - доколе!
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
urfin

Сообщений: 328
Дата регистрации: 17.08.2004
Magellan
Вот разработчикам надо задать вопрос - доколе!
Адабрямс. Меня тоже это выкашевает. Но таких интерфейсных преверед - мало.
В 9-ке, таки появилась возможность отобразить GIF с прозрачностью на кнопке
(подозреваю что и в 8-ке это было, но недокументировано).
Правда делается это через одно место
А именно : до отображения кнопки с гифом, должен быть инициализован
имидж с этим гифом (фокс его закэширует). Изврат - чистой воды.
А кому сейчас легко ?




------------------
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
urfin: Cпасибо, действительно - так работает
но проблема остается - нет возможности отображать для каждой кнопки объект image
видимо придется свои классы кнопок создавать на базе того же image или как-то выкручиваться с WinAPI, если кто-нибудь пнет меня в нужном направлении, буду очень благодарен!
надо же куда-то пристроить 56 MB профессиональных красивейших иконок
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Magellan писал(а):
Цитата:
надо же куда-то пристроить 56 MB профессиональных красивейших иконок

ХА! Он еще думает! Делиться надо!
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
легко!
давай ftp
тока фокс с ними не умеет!
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Magellan писал(а):
Цитата:
легко! давай ftp
тока фокс с ними не умеет!

Для затравки немножко выложи в местный файловый архив, а там посмотрим кто и что не умеет...
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
процесс пошел

каталог icons
брошу 2 rar'a, как просили - для затравки

ssa
Для затравки немножко выложи в местный файловый архив, а там посмотрим кто и что не умеет...

не забудь показать нам как нормально отображать их в фоксе
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
Дык пусто тама
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
прошу прощения....
каталог создался, загрузка идет нормально (бегунок у эксплорера бежит) а в каталоге ничего не появляется... какие телодвижения надо совершить для нормальной загрузки?
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
а загрузка не работает, давайте нормальный ftp
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
Вобщем, берите пока здесь
magellan.pkf-karo.ru
magellan.pkf-karo.ru soft xp.rar
жду примеров в фоксе
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Magellan
Автор
Получилось!
В местный файловый архив www.foxclub.ru в каталог ICONS выложены некоторые иконки
Basic_Pack.zip   
Impact_pack.zip 
Soft_XP_pack.zip 
Soul_Developer_Icon_Kit_Vol1.zip
Soul_Developer_Icon_Kit_Vol2.zip
Tupper.zip 
XP_Pack.zip
---------------------
всего 7.66 MB
кстати загрузка пошла нормально после того, как в именах зипов пробел был заменен на подчеркивание
сокращен размер зипов - убраны разные иконки для МАКов, png, bmp... итд

Вопрос в силе: как научить фокс отображать иконки без стретча, гифы с прозрачностью?
ведь делают же люди! сам видел... [sm035]
помогите!

Ratings: 0 negative/0 positive
Re:icons
urfin

Сообщений: 328
Дата регистрации: 17.08.2004
Фор садо-мазо пурпойз онли :

* РИСУЕМ ИКОНКУ tnIconId НА ФОРМЕ tnHWnd В КООРДИНАТАХ tnLeft, tnTop
* P.S. : СМ. WINAPI.H РАЗДЕЛ ICON
LPARAMETERS tnHWnd AS Integer, tnIconId AS Integer,;
tnLeft AS Integer, tnTop AS Integer
LOCAL lnDCHandle AS Integer, lnIconHandle AS Integer, llSuccess AS Logical
llSuccess = .F.
lnDCHandle = This.GetDC(tnHWnd)
IF lnDCHandle # 0
lnIconHandle = This.LoadIcon(tnIconId)
IF lnIconHandle > 0
llSuccess = This.DrawIcon(lnDCHandle, lnIconHandle, tnLeft, tnTop)
ENDIF
This.ReleaseDC(tnHWnd, lnDCHandle)
ENDIF
RETURN llSuccess
*!* Удобно для самопального MESSAGEBOX() пользовать,a не грузить бээмпэшки,
*!* но видимо придется перерисовывать форму в ThisForm.Paint(), иначе исчезают,
*!* зато можно их накладывать друг на друга ;)))
*!* w=CREATEOBJECT('Form')
*!* w.Visible = .T.
*!* o=NEWOBJECT('cntProc','c:\vfp\main\prog\custom')
*!* o.Api.DrawIconResource(w.Hwnd, 32513, 40, 40)
*!* MESSAGEBOX('')
*!* RELEASE o, w

* РИСУЕМ ИКОНКУ tnIconHandle НА УСТРОЙСТВЕ tnDCHandle
* ИСПОЛЬЗОВАТЬ В СВЯЗКЕ GetDC->LoadIcon->DrawIcon->ReleaseDC
* This.DrawIcon(tnDCHandle, tnIconHandle, 40, 20)
LPARAMETERS tnDCHandle AS Integer, tnIconHandle AS Integer,;
tnLeft AS Integer, tnTop AS Integer
DECLARE SHORT DrawIcon IN WIN32API INTEGER, INTEGER, INTEGER, INTEGER
DrawIcon(tnDCHandle, tnLeft, tnTop, tnIconHandle)
CLEAR DLLS 'DrawIcon'

* ЗАГРУЖАЕТ ФАЙЛ ИКОНКИ КАК РЕСУРС WINDOWS
* ВОЗВРАЩАЕТ RESOURCE HANDLE > 0
* 0 - ОШИБКА ПРИ ЗАГРУЗКЕ
* -1 - ФАЙЛ НЕ НАЙДЕН
LPARAMETERS tcIconFileName AS String
ASSERT FILE(tcIconFileName)
LOCAL lcTempFile AS String, lnHandle AS Integer
lnHandle = -1
DECLARE INTEGER LoadImage IN WIN32API;
INTEGER, STRING, INTEGER, INTEGER, INTEGER, INTEGER
lcTempFile = This.TempFile()
COPY FILE (tcIconFileName) TO (lcTempFile)
lnHandle = LoadImage( 0, lcTempFile, 1, 0, 0, 0x0010)
ERASE (lcTempFile)
CLEAR DLLS 'LoadImage'
RETURN lnHandle

* ЗАГРУЗКА ИКОНКИ (ПАРАМЕТР СМ. В WINAPI.H РАЗДЕЛ ICON)
* РЕЗУЛЬТАТ : УСПЕШНО, ЕСЛИ lnHandle > 0
* This.LoadIcon(32516) && Information
LPARAMETERS tnIconId AS Integer
LOCAL lnHandle AS Integer
DECLARE INTEGER LoadIcon IN WIN32API INTEGER, INTEGER
lnHandle = LoadIcon(0, tnIconId)
CLEAR DLLS 'LoadIcon'
RETURN lnHandle

* RETRIEVES A HANDLE TO A DISPLAY DEVICE CONTEXT (DC)
* FOR THE CLIENT AREA OF THE SPECIFIED WINDOW
* РЕЗУЛЬТАТ : УСПЕШНО, ЕСЛИ DC # 0
* IF This.GetDC(ThisForm.Hwnd) # 0
LPARAMETERS tnHWnd AS Integer
DECLARE INTEGER GetDC IN WIN32API INTEGER
lnDCHandle = GetDC(tnHWnd)
CLEAR DLLS 'GetDC'
RETURN lnDCHandle

* RELEASES A DEVICE CONTEXT (DC), FREEING IT FOR USE BY OTHER APPLICATIONS
* This.ReleaseDC(ThisForm.Hwnd, This.GetDC(ThisForm.Hwnd))
LPARAMETERS tnHWnd AS Integer, tnDCHandle AS Integer
DECLARE INTEGER ReleaseDC IN WIN32API INTEGER, INTEGER
ReleaseDC(tnHWnd, tnDCHandle)
CLEAR DLLS 'ReleaseDC'




------------------
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Magellan!

Про gif с прозрачностью тебе вроде уже рассказали... Их же мало - загрузи из
при запуске программы и всё. А почему он ico масштабирует - это есть великая
тайна...




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Размер иконки в кнопке
d_S_b

Сообщений: 33
Откуда: Киев
Дата регистрации: 12.04.2005
Hi Magellan!

Как хорошо, что есть на свете не жадные человеки

Решение твоего вопроса заключается в использовании правильного редактора иконок!
Я пользуюсь ArtIcons Pro v4.0 Этот редактор позволяет создавать, редактировать, извлекать, преобразовывать иконки в/из bmp, gif, jpg, png и т.д. Руссифицирован, есть русский help.
Ссылка на сайт www.aha-soft.com
Форматы gif и png поддерживают прозрачность
Для bmp нужно добавить маску: то что должно быть не прозрачным на bmp заливается черным цветом и с расширением msk, т.е. на каждый рисунок 2 файла my.bmp и my.msk.
Делается за пару кликов мышью

Теперь по поводу FoxPro

Иконки всегда растягиваются или сжимаются до 32х32, причем коряво
Иконку 16х16 с цветом > 256 FoxPro вообще не воспринимает
Если очень хочешь применять на кнопках именно иконки - создай новую 32х32 и в центр ее скопируй изображение 16х16

Но лучше взять gif или png - можешь сделать любой размер и количество цветов и конечно прозрачность!

Для VFP6 подходит только bmp с маской

Никаких дополнитенльных файлов или двивижений не требуется, кроме небольшой работы ручками;)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 32 (Гостей: 32)

© 2000-2024 Fox Club 
Яндекс.Метрика