end;
procedureTForm1.Button1Click(Sender: TObject);
begin
aaa(image1.picture.bitmap,image2.picture.bitmap);
Image2.invalidate;
end;
Писал это не я. Это написал сам Борланд (некузявно было бы взглянуть на класс TButtonGlyph. Как раз из него я это и выдернул). Ну а если уже совсем хорошо разобраться, то можно заметить функцию ImageList_DrawEx, в которой можно на 25 и 50 процентов уменьшить яркость (но визуально это очень плохо воспринимается). Соответственно параметры ILD_BLEND25, ILD_BLEND50, ILD_BLEND-A-MED. Естественно, что последний абзац работает только с тройкой.
Denis Tanayeff
Это кусочек из рабочей проги на Си, Вроде все лишнее я убрал.
#define CO_GRAY 0x00C0C0C0L
hMemDC = CreateCompatibleDC(hDC);
hOldBitmap = SelectObject(hMemDC, hBits);
// hBits это собственно картинка, которую надо «засерить»
GetObject(hBits, sizeof(Bitmap), (LPSTR) &Bitmap);
if (GetState(BS_DISABLED)) // Blt disabled
{
hOldBrush = SelectObject(hDC, CreateSolidBrush(CO_GRAY));//CO_GRAY
PatBlt(hDC, BD_BORDERWIDTH, BD_BORDERWIDTH, Bitmap.bmWidth, Bitmap.bmHeight, PATCOPY);
DeleteObject(SelectObject(hDC, hOldBrush));
lbLogBrush.lbStyle = BS_PATTERN;
lbLogBrush.lbHatch =(int)LoadBitmap(hInsts, MAKEINTRESOURCE(BT_DISABLEBITS));
hOldBrush = SelectObject(hDC, CreateBrushIndirect(&lbLogBrush));
BitBlt(hDC, BD_BORDERWIDTH, BD_BORDERWIDTH, Bitmap.bmWidth, Bitmap.bmHeight, hMemDC, 0, 0, 0x00A803A9UL); // DPSoa
DeleteObject(SelectObject(hDC, hOldBrush));
DeleteObject((HGDIOBJ)lbLogBrush.lbHatch);
}
Компонент для работы с FLIC-анимацией
Новостная группа: comp.lang.pascal.delphi.components
Тема: Компонент для работы с FLIC-анимацией: отправной пункт.
От: Paul Kuczora < paul@kuczora.demon.co.uk>
Дата: Чет, 03 Авг 95 16:51:19 GMT
В качество ответа на целый круг вопросов, я включил в свой ответ два файла:
aaplay1.inc — include-файл с интерфейсом для библиотеки aaplay.dll
aaplay1.pas — сырой скелет компонента для проигрывания FLIC-анимации
Я разработал это глядя на другой компонент (это был полнофункциональный плейер, работающий как форма), и вынужден был сохранить некоторые вещи неприкосновенными (попробуй тут сделай иначе :-)
Для работы вам понадобится библиотека aaplay.dll от Autodesk, которую вы можете найти на множестве мест (например, я так предполагаю, на Encarta CD). Для полного счастья вы можете обратиться к файлу помощи для Animation Player for Windows, который, не удивляйтесь, содержит справку для этой DLL — на первой странице найдите в ее самой нижней части указание на эту библиотеку, и перед вами предстанет полная справка по вызовам этой самой DLL.
Надеюсь что помог вам…
ВНИМАНИЕ! Это мой первый код, написанный для Windows (спасибо Delphi), поэтому он рекомендуется только для ознакомления.
{ ============================================================================ }
{ aaplay1.inc }
{ (c) P W Kuczora }
{ 17-го апреля 1995 }
{ Заголовочный файл, содержащий константы и определения типов для aaplay1.pas }
const
NULL = 0;
NULLPTR = ^0;
{
Доступные Флаги wMode: integer;
Используются в aaLoad, aaReLoad
Первые восемь бит wMode используются в aa_flags.
}
AA_MEMORYLOAD = $1; { Загрузка в память }
AA_HIDEWINDOW = $2; { Скрывать окно анимации }
AA_NOPALETTE = $4 ; { Анимация без палитры }
AA_RESERVEPALETTE = $8; { Резервировать при старте всю палитру }
AA_LOOPFRAME = $10; { Циклическая загрузка кадров }
AA_FULLSCREEN = $20; { Использовать полноэкранный режим воспроизведения }
AA_STOPNOTIFY = $40; { Исключать любые уведомляющие сообщения }
AA_STOPSTATUS = $80; { Исключать сообщения об изменении статуса }
AA_NOFAIL = $100; { Уменьшение типа нагрузки при ошибке }
AA_DONTPAINT = $200; { Не делать paByVal-анимацию при загрузке }
AA_BUILDSCRIPT = $400; { lpzFileName – скрипт, не имя }
AA_ALLMODES = $FF;
{
Доступные флаги для режимов звука – wMode: integer;
Используются в aaSound
}
AA_SNDFREEZE = $1; { Заморозка кадров при проигрывании звуков }
AA_SNDDEVICEID = $100; { ID устройства, не имя }
AA_SNDBUILDALIAS = $200; { создавать псевдоним звукового устройства }
{
aaNotify позволяет извещать приложение о проигрывании определенных кадров.
lPosition – позиция, на которой должно происходить уведомление.
wParam для этого сообщения – hAa, а lParam копируется из этого вызова.
При установке сообщения возвращается TRUE.
Следующее значение определяет необходимость завершения цикла анимации по окончании проигрывания звука. Если звук отсутствует, анимация зацикливается навсегда.
}
AA_LOOPSOUND = $FFFF;
{
Автоматическое уведомление посылается при перезагрузке в скрипте анимации.
Читать дальше