![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| ShuVaS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 26.12.2004 Где: Севастополь Репутация: нет Всего: нет |
Ну вот опять я...Опять куча вопросов.Решил написать че то типа паинта : с зумом, с палитрами - ну короче со всем и решил добавить новое - тени гаусово размытие ...Вот и прошу помочь мне - с чего мне собственно начать ???Почему не открываються *.jpg или как сделать поддержку *.png .Почему при изменении размеров формы image так сильно мерцает...Короче я так понял это довольно тяжедая тема и прошу помочь кто чем может ...
|
|||
|
||||
| s-mike |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 5 Всего: 16 |
1) Для использования *.jpg подключи модуль JPEG к проекту
2) Поддержку *.png можно сделать с помощью дополнительных компонентов, которые входят в состав JEDI VCL (http://delphi-jedi.org) или возьми с http://pngdelphi.sourceforge.net/. Есть еще некоторые. Юзай поиск и torry.net. 3) Из-за чего мерцает Image? Этот вопрос звучит скорее как риторический. Ведь это не оконный компонент, а графический. То есть он отрисовывается на родительском оконном компоненте. Так что при необходимости его перерисовки сначала перерисовывается компонент под ним, а потом уже сам Image. Вот это и вызывает мерцание. Какие методы устранения? Можно попробовать Image.ControlStyle := Image.ControlStyle + [csOpaque], но в ряде случаев мерцание все равно будет заметно. Я вот библиотеку целую сделал, чтобы обойтись без TImage. Мерцания никакого. Загляни сюда: http://forum.vingrad.ru/index.php?showtopic=39908. |
|||
|
||||
| ShuVaS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 26.12.2004 Где: Севастополь Репутация: нет Всего: нет |
Библиотеку видел.Стронних компонентов использоваться не хочу .Мерцания избежал даббл буфером.Вопросик - можно ли как то зоом делать ?!А модуль jpeg у меня всегда покключен- но не фига не пашет..
|
|||
|
||||
| Штабс |
|
|||
|
Unregistered |
ShuVaS!
Прости я насчет *.png ну зачем тебе париться да возьми библиотеку с открытыми кодами да выдери оттуда работу с png поверь и по времени и по силам ты сэкономишь всеравно ничего координально лучшего ты не создашь напрягает эта библиотека кинь ссылку на себя пришлю GraphicEx добавка к VirtualTree вроде там объявили много вот почитай GraphicEx is an addendum to Delphi's Graphics.pas in order to enable your application to load many common image formats. This library is primarily designed to load images as background (buttons, forms, toolbars) and textures (DirectX, OpenGL) or for image browsing and editing purposes as long as you don't need to save images. Currently only TTargaGraphic also supports saving an image. GraphicEx is open source under the Mozilla Public License (MPL). Please read the license agreement before you start using this library. Portable network graphic images (*.png)byte order: big endian sample sizes: 1, 2, 4, 8, 16 bits per sample color spaces: indexed, grayscale (alpha), RGB(A) compression format: LZ77 specials: supported chunks: IHDR, IDAT, IEND, PLTE, gAMA, tRNS, bKGD transparency support partially for RGB, which is stored as 32 bits format Желаю успехов |
|||
|
||||
| ShuVaS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 26.12.2004 Где: Севастополь Репутация: нет Всего: нет |
Ладно но допустим я открываю разные форматы .Png там jpeg и на разные расширения - разные процедуры:привожу пример сосежнего топика :
или свой обработчик открытия бмп:
Вопрос - одной процедурки то нету для открытия всех типов файлов - как при нажатии на кнопку при выборе изображения сама выбиралась нужная процедура ? |
||||
|
|||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
комментарии по поводу данного кода: с jpeg никаких проблем не будет вообще... а с другими форматами (и бмп тоже!) БУДУТ! Вся проблема что GIF, BMP, PNG бывают "прозрачными". Нужно как бы проверять изображения на прозрачность (BMP, PNG - pixelformat = pf24bit, GIF - тут как я понял нужно смотреть все картинки и проверять на прозрачность каждую - выходит надёжнее) и в этом случае загружать нужно в соответствии с особенностями даных форматом и модулей, которые их поддерживают, но в конечном итоге получим Image.pixelformat:=pf32bit!. Теперь вся трудонсть в том, что винда хоть и повсюду юзает 32-битные битмапки, обычным GDI их не выведешь Это сообщение отредактировал(а) Illusion Dolphin - 19.1.2005, 12:08 -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| Штабс |
|
|||
|
Unregistered |
а анализировать название файла не хочешь
перед открытием типа расширение JPG тогда процедура по открыдию JPG а если PNG тгогда процедура по открыдию PNG конечно это упрощенно можно в дальнейшем создать и абстрактный клас что то типа посмотри код if AnsiLastChar(FDirectory)^ <> '\' then FDirectory := FDirectory + '\'; Picture := TPicture.Create; Extensions := TStringList.Create; try FileFormatList.GetExtensionList(Extensions); for I := 0 to Extensions.Count - 1 do Extensions[I] := '.' + UpperCase(Extensions[I]); Extensions.Sort; if FindFirst(FDirectory + '*.*', faAnyFile, SR) = 0 then begin // iterate through the picked folder and collect all known image files repeat if SR.Attr <> faDirectory then begin // check whether this file is an image file we can show Ext := ExtractFileExt(SR.Name); if Extensions.Find(Ext, I) then begin // fine, we found an image file, so add it to our internal list New(Entry); Entry.Name := SR.Name; Entry.Bitmap := TBitmap.Create; try Picture.LoadFromFile(FDirectory + SR.Name); if not (Picture.Graphic is TBitmap) then begin // Some extra steps needed to keep non TBitmap descentant alive when scaling. // This is needed because when accessing Picture.Bitmap all non-TBitmap content // will simply be erased (definitly the wrong action, but we can't do anything // to prevent this). Hence we must draw the graphic to a bitmap. with Entry.Bitmap do begin PixelFormat := pf24Bit; Width := Picture.Width; Height := Picture.Height; Canvas.Draw(0, 0, Picture.Graphic); end; Picture.Bitmap.Assign(Entry.Bitmap); end; RescaleImage(Picture.Bitmap, Entry.Bitmap, True); FFileList.Add(Entry); Caption := IntToStr(Count) + ' images loaded'; R.Top := YPos + (Count div XCount) * HeightPerLine; if R.Top < R.Bottom then begin InvalidateRect(Handle, @R, False); UpdateWindow(Handle); end; Inc(Count); except // no exceptions please, just ignore invalid images Application.ProcessMessages; end; |
|||
|
||||
| ShuVaS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 26.12.2004 Где: Севастополь Репутация: нет Всего: нет |
Че то не фига не понял я .... короче закидываю на время я создание паинта - теперь мне хотя бы сделать что бы форматы открывало развыне (*.bmp *.jpeg *.png и *.giv и *.ico ).Вот кинул на форму имадже , кнопку - и какой обработчик писать??Желательно без findfirst ...можно по подробнее...
p.s Дельфин ты где ???Я тя в асе уже дней пять выцепляю ! |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Хорошо давай поподробнее
кидаешь на форму OpenDialog на событии по нажатию кнопки пишешь if OpenDialog1.Execute then { если OpenDialog1.выпониося тогда... дословный перевод} begin ... ... end; весь навар у тебя в том что ты имеешь OpenDialog1.FileName полное имя открываемого файла теперь можно написать Ext := ExtractFileExt(SR.Name); получить расширение выбранного файла получаем if OpenDialog1.Execute then { если OpenDialog1.выпониося тогда... дословный перевод} begin Ext := ExtractFileExt(SR.Name); end; а уж дальше сваливаешься куда тебе надо.... и как тебе надо примеры if Ext='JPG' then ...... если EXT определена как строка или case Ext of 'JPG':.... 'PNG':... end; если EXT определена как типизированая переменная |
|||
|
||||
| Штабс |
|
|||
|
Unregistered |
я там заметил неточность
SR.Name:=OpenDialog1.FileName это одно и тоже |
|||
|
||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
ShuVaS: если хочешь я могу сюда развестить примерчик который открывает BMP JPEG GIF (всё остальное - качай GraphicsEx), но уже завтра...
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| ShuVaS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 26.12.2004 Где: Севастополь Репутация: нет Всего: нет |
оки ... заранее спасиба ..
|
|||
|
||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 13 Всего: 63 |
Хе-хе
Paint-demo. Поддержка: BMP (32-битные тоже!) , JPEG, GIF (эксперементально) + скролинг. Исходники прилагаются. Понятия написанного мною достаточно чтобы довести до ума идею.
Это сообщение отредактировал(а) Illusion Dolphin - 20.1.2005, 22:01 Присоединённый файл ( Кол-во скачиваний: 24 )
Paint.zip-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
![]()
|
| Правила форума "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. |