Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

 TmpImage.Canvas.Brush.Color := clBtnFace;

 try

with MonoBmp do begin

Assign(bmpFrom);

Canvas.Brush.Color := clBlack;

if Monochrome then begin

Canvas.Font.Color := clWhite;

Monochrome := False;

Canvas.Brush.Color := clWhite;

end;

Monochrome := True;

end;

with TmpImage.Canvas do begin

Brush.Color := clBtnFace;

FillRect(IRect);

Brush.Color := clBlack;

Font.Color := clWhite;

CopyMode := MergePaint;

Draw(IRect.Left + 1, IRect.Top + 1, MonoBmp);

CopyMode := SrcAnd;

Draw(IRect.Left, IRect.Top, MonoBmp);

Brush.Color := clBtnShadow;

Font.Color := clBlack;

CopyMode := SrcPaint;

Draw(IRect.Left, IRect.Top, MonoBmp);

CopyMode := SrcCopy;

bmpTo.assign(TmpImage);

TmpImage.free;

end;

 finally

MonoBmp.Free;

 end;

end;

procedure TForm1.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; { Уменьшение типа нагрузки при ошибке }

Поделиться с друзьями: