Показать сообщение отдельно
Старый 29.06.2010, 16:54   #4
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Обезцветить спрайт

Ну смотри.
AnimImage - это тоже самое что обычное изображение только с большим количеством Pixmap`ов.
Смотрим в справку:
Function LockImage:TPixmap( image:TImage,frame=0,read_lock=True,write_lock=True )
Description: Lock an image for direct access
Returns: A pixmap representing the image contents
Information: Locking an image allows you to directly access an image's pixels.
Only images created with the DYNAMICIMAGE flag can be locked.
Locked images must eventually be unlocked with UnlockImage before they can be drawn.
Второй параметр ф-ции LockImage отвечает за фрейм (кадр)
Значит нам нужно циклически проделать данную операцию с каждым кадром изображения.
For Local frm%=0 To CountFrames 1
     Local Pixmap
:TPixmap LockImage(Imagefrm)  
     For 
Local Y% = 0 Until Pixmap.Height 
             
For Local X% = 0 Until Pixmap.width 
                     Local ARGB
% = ReadPixel(PixmapX%, Y%)  
                     
Local R% = (ARGB & $00FF0000Shr 16 ' красный 
                     Local G% = (ARGB & $0000FF00) Shr 8 ' 
зеленый 
                     Local B
% = (ARGB & $000000FF)         ' синий компонент 

                     Local i# = 0.2126 * R + 0.7152 * G + 0.0722 * B 
                     R = i 
                     G = i  
                     B = i  
     
                     WritePixel Pixmap, X, Y, $FF000000 + R Shl 16 + G Shl 8 + B 
             Next
     Next
Next 
CountFrames - количество кадров изображения.
Вроде был универсальный способ узнать количество.
Чтото вроде: Image.Framse.Count или Image.Frames.Length
Поэксперементируй.
А лучше возьми Blide.
Он всегда подскажет.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
teremochek (29.06.2010)