![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
s-mike |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
Наконец-то я выкладываю новую версию своей библиотеки компонентов.
Что нового в этой версии? 1. Добавлен компонент TTexturePanel. 2. В TCustomScrollingImage добавлено масштабирование, а также автоматическое масштабирование по размеру компонента. 3. Изменена иерархия компонентов для скроллинга, теперь TFastScrollingImage наследуется от TScrollingImage. 4. Наследники TCustomScrollingImage, а также компоненты TBitmapContainer и TBitmapPanel теперь имеют свойство Transparent, позволяющее делать компонент прозрачным. 5. Добавлена возможность нестандартной отрисовки изображения в компонентах для скроллинга. 6. Добавлено изменение курсоров для скроллинга в design-time с помощью свойств ImageCanScrollCursor, ImageDragCursor, ImageScrollDisabled. 7. В TCustomScrollingImage добавлены свойства RealImagePos, RealImageLeft, RealImageTop, по которым можно узнать настоящие координаты изображения в компоненте, учитывая то, что оно может неполностью заполнять компонент. 8. Добавлено в TCustomScrollingImage свойство CanScrollWithMouse, позволяющее запретить скроллинг с помощью мыши. 9. Исправлен глюк в навигаторе при щелчке в нем правой кнопкой мыши. 10. В модуль ImgCtrlUtils добавлена процедура LoadGraphicToBitmap и немного подправлена функция IsEmptyPicture. 11. Добавлен модуль ImgCtrlsSkins. 12. Устранены другие небольшие баги и ошибки. Жду ваших пожеланий и оценок! Версия 2.1.1: Это сообщение отредактировал(а) Snowy - 4.12.2006, 14:17 Присоединённый файл ( Кол-во скачиваний: 395 ) ![]() |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
Из первых впечатлений:
1) ScrollingImage FitImage -> Abstract Error или деление на ноль ( function TCustomScrollingImage.GetFitImageScale: Extended; begin Result := Min(ClientWidth / FPicture.Width, ClientHeight / FPicture.Height); //тутя бы проверил FPicture на не nil и FPicture.Height и FPicture.Width на не о end; ) 2) Я бы добавил события на скрол мыши, если их нет (я не заметил) события на скрол мыши 3) ScrollingImageNavigator1 - чтобы можно было правой кнопкой задавать размер области - было бы очень неплохо -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
s-mike |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
1) Ой, сенкс, не заметил.
2) Насчет этого события у меня есть сомнения. Его сделать несложно, но оно будет работать только тогда, когда компонент будет иметь фокус. Но удобно ли это? В демке я сделал возможность скроллинга колесом мыши, когда курсор находится над компонентом. Мне кажется, что это удобнее, а делается не так уж сложно. В хелпе об этом даже написал. Но если я неправ, то прошу меня поправить. 3) Работаем! ![]() Это сообщение отредактировал(а) s-mike - 19.3.2005, 20:11 |
|||
|
||||
offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: нет Всего: 7 |
Компоненты хорошие. Особенно удивило, что при масштабировании изображения, границы изображения сглаживаются, а не остаются в зазубринах как в стандартном TImage. Но, сглаживание происходит не полностью. Возможно что, то нужно дополнительно выставить, но я ничего не нашел?
|
|||
|
||||
s-mike |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
Вот этого я как раз и не понял ![]() |
|||
|
||||
offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: нет Всего: 7 |
Да вроде при уменьшении картинки она выглядит более приятней, чем в стандартном TImage но не столь идеально как в компоненте G32. Будет ли идти работа в направлении улучшении качества картинки при изменении размера (Resample)?
|
|||
|
||||
s-mike |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
Функций для ресэмплинга существует много, своих я пока не придумал. Чужих брать не хочется. StretchBlt врядли заменю, разве что найду что-то более быстрое. Но естественно хотелось бы найти (или придумать ![]() |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
Прикреплю пока тему... Думаю актуально, пусть повисит немного
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
s-mike |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
Спасибо Это сообщение отредактировал(а) s-mike - 20.3.2005, 10:40 |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
См. функцию SetStretchBltMode + HALFTONE -------------------- С уважением, г-н Посол. |
|||
|
||||
s-mike |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
p0s0l, спасибо, но это я знаю. Но тут дело вот в чем: HALFTONE в SetStretchBltMode не работает под Win9x. Просто получается, что под этими ОС это свойство будет просто не востребовано, поэтому я решил, что лучше сделать событие на масштабирование.
Источник: http://msdn.microsoft.com/library/default....itmaps_6cth.asp |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
s-mike, это оно конечно есть такое дело... Но я бы всё равно добавил такое свойство, тем более что труда это много не отнимет, всего десяток лишних строчек... А то что оно не будет работать на Win9x - дык возьми свойство AlphaBlend у TForm - оно тоже не работает на Win9x, но всё-таки его добавили... Просто картинка в Win9x будет выглядеть хуже, чем в Win2k/XP - согласись: это всё же лучше, чем если бы везде выглядело "плохо" ? Тем более, учитывая то, что процент людей, использующи Win9x постоянно падает...
В общем, если бы я делал эти компоненты, то я бы сделал такое свойство... А ставить его в True или нет - оставил бы на совести программиста, который бы использовал эти компоненты, ему виднее - надо это или нет... Но дело твоё конечно ![]() Ну и я решил потестить немного... Честно говоря, почти ниодного дейсвия я не смог сделать без каких либо глюков, или непонятностей - очень сыро, недоделано и недоработано! ![]() 1. Только-только кинул компонент на форму... Загрузил картинку... Ставлю Transparent = True, FitImage = True, как лезут сплошные "Range Checking Error"... 2. FitImage - всё-таки нужно после его изменения в True перемасштабировать картинку... А то как-то неудобно, что нужно специально изменять размеры... 3. --- 4. Не вижу свойства Proportional ![]() 5. Странная работа FitImage - если изменить размер по горизонтали - то масштаб не меняется, если по вертикали - меняется... Странная логика... Кто сказал, что вертикаль главнее горизонтали ? В итоге не очень красивые ситуации получаются... 6. Zoom - имхо, должно быть ZoomX и ZoomY... Если Proportional = True, то эти Zoom'ы при изменении друг другу приравниваются... 7. FitImage = True, размер компонента больше размера картинки - Zoom не делается автоматически больше 100%... Имхо, нужно ввести доп. свойство типа АвтоУвеличения - если оно = True, то Zoom может делаться больше 100, иначе - не может. 8. В общем, как-то необдуманно и глючно работает система увеличения - нужно её пересмотреть, перерыть, перетестить. И главное - удобство использования, и гибкость. Гибкость почти отсутствует... Ладно, теперь беру TBitmapPanel: 9. В общем опять, загружаю эту же картинку... Хочу испробовать Transparent, ставлю в True... Но чтобы проверить, нужно увеличить компонент так, чтобы было незанятное картинкой место... Увеличиваю - опять "Range Checking Error"... Мдя... Возможно, это тот же глюк, что и в п.1 В общем, подумав, что всё-таки дело в особенности картинки, загрузил другую - эффект тот же... Вывод: если Transparent = True, и есть незанятое место, то Range Checking Error... Поглядев на свойства, понял, что тут больше тестить нечего... ![]() Достаю ScrollingImage, загружаю в него картинку: 10. Ставлю FitImage = True - Abstract Error... Причем дальше вроде как всё работает - размеры картинки подгоняются под размеры контрола... Ставлю FitImage = False - опять Abstract Error... В общем, при изменении FitImage вылазит ошибка 11. AutoCenter = True, FitImage = False, меняю размеры компонента - автоцентрирования не проиходит 12. Непонятно: CanScroll = True, CanScrollWithMouse = False, как теперь я могу скроллировать ? 13. По поводу п.12 думаю: наверное, есть какой-то метод для скроллирования... Вижу ScrollBy - он работает как со включенным CanScroll, так и с выключенным... Зато работает он как-то странно... Т.е. сдвигает картинку, но вообще по-левому... Зачем этот метод такой нужен ? Если он для внутреннего использования, то народовать его не надо... Вроде больше ничего интересного в свойствах не вижу... Теперь достаю FastScrollingImage: 14. Тоже очередная проблема с Transparent... 15. В общем, пробую Zoom - меняю-меняю - нифига не масштабируется... Так как и было в реальном масштабе - так и осталось (FitImage = False)... Запускаю проект - показывается в Zoom-масштабе... Т.е. в Design-time не работает эта весчь... 16. FitImage делаю True, тоже в Design-time не масштабируется... Хотя Zoom меняется... Видимо - это последствие п. 15... Запускаю проект - Exception EReadError, Error reading FastScrollingImage1.FitImage: Floating point division by zero... Потыкав еще свойства, я потом уже вообще ни при каких значения FitImage и Transparent не мог запустить проект... Дело спасло только удаление компонента и вытаскивание нового... 17. Ставлю свойство Cursor, выбрал крестик - запускаю - стрелочка... Свойство не работает... 18. Убавил размеры компонента, чтобы не полностью влезала картинка... Ставлю ScrollButton = mbRight, всё равно двигается не правой, а левой кнопкой... В общем я уже устал и тестить и писать... SBScrollingImage - даже не стал смотреть... Это сообщение отредактировал(а) p0s0l - 20.3.2005, 22:12 -------------------- С уважением, г-н Посол. |
|||
|
||||
s-mike |
|
||||||||||||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
Уже в общем то исправлено, об этом еще Illusion Dolphin говорил.
В рантайм оно так должно и быть. В дизайн-тайм после исправлений abstract error тоже работает (обновление скоро выложу).
А это что значит?
Не видел чтобы в каком либо из графических вьеров или редакторов была такая возможность, ИМХО то что это есть в TImage - извращение.
Вот этого я до конца не понял. Изображение ужимается под размер контрола, если оно больше клиентской облсти компонента. Пропорционально.
Опять же говорю - сделать несложно, но вот какое этому практическое применение? Это разумная мысль, согласен.
Хм, хотелось бы услышать более конкретную информацию. 1) Что глючно? 2) В чем неудобства? 3) Какая нужна гибкость? Сам я может о чем-то не догадываюсь?
Range check error не замечал, но то что это свойство работает неправильно - факт. Буду исправлять.
Это не глюк, я и делал его с таким расчетом, достаточно посмотреть исходный код. Я делал компонент по образу и подобию ACDSee и там такого не наблюдается, изображение центрируется только при загрузке. Да и практической ценности ИМХО в этом никакой. Если я не прав - прошу поправить. Добавлено @ 23:10
Сделано свойство для TSBScrollingImage для возможности скроллинга только скроллбарами. Для других компонентов этой серии идентично CanScroll. Наверно надо его перенести все-таки в TSBScrollingImage, наверно так будет понятней. |
||||||||||||||||||||||
|
|||||||||||||||||||||||
s-mike |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
Хе-хе, ScrollBy - это не моего компонента метод, а унаследован от TWinControl и предназначен естественно совершенно не для того. Так что претензии ко мне тут совершенно необоснованные. Для этого предусмотрен метод ScrollImage. Добавлено @ 23:29
Ндаа... Что-то там с VCL-ем не то. Не хайдится дочерний контрол-контейнер изображения. Попробую разобраться. |
||||
|
|||||
s-mike |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
Симитировать не получилось, поподробнее плиз...
Похоже нужно это свойство спрятать. Оно ничего не дает и не даст. Для изменения курсора служат три других свойства: ImageCanScrollCursor, ImageDragCursor, ImageScrollDisabled. Но скорей всего в новой версии они будут переименованы. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |