procedure TMain.BitBtnClick(Sender: TObject); var Palette : HPalette; PaletteSize : Integer; LogSize: Integer; LogPalette: PLogPalette; Red : Byte; begin Palette := Image.Picture.Bitmap.ReleasePalette; // здесь можно использовать просто Image.Picture.Bitmap.Palette, но я не // знаю, удаляются ли ненужные палитры автоматически
if Palette=0 then exit; //Палитра отсутствует PaletteSize := 0; if GetObject(Palette, SizeOf(PaletteSize), @PaletteSize) = 0 then Exit; // Количество элементов в палитре = paletteSize if PaletteSize = 0 then Exit; // палитра пустая // определение размера палитры LogSize := SizeOf(TLogPalette)
+ (PaletteSize - 1) * SizeOf(TPaletteEntry); GetMem(LogPalette, L!
ogSize); try // заполнение полей логической палитры with LogPalette^ dobegin palVersion := $0300; palNumEntries := PaletteSize; GetPaletteEntries(Palette, 0, PaletteSize, palPalEntry); // делаете что нужно с палитрой, например: Red := palPalEntry[PaletteSize-1].peRed; Edit1.Text := 'Красная составляющего последнего элемента палитры ='+IntToStr(Red); palPalEntry[PaletteSize-1].peRed := 0; //....................................... end; // завершение работы Image.Picture.Bitmap.Palette := CreatePalette(LogPalette^); finally FreeMem(LogPalette, LogSize); // я должен позаботиться сам об удалении Released Palette DeleteObject(Palette); end; end;
{ Этот модуль заполняет фон формы рисунком bor6.bmp
(256 цветов) и меняет его палитру при нажатии кнопки } unit bmpfo!
rmu; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
procedure TBmpForm.FormDestroy(Sender:
TObject); begin Bitmap.Free; end;
// since we're going t!
o be painting the whole form, handling this // message will suppress the uneccessary repainting of the background // which can result in flicker. procedure TBmpform.WMEraseBkgnd(var m : TWMEraseBkgnd); begin m.Result := LRESULT(False); end;
procedure TBmpForm.FormPaint(Sender: TObject); var x, y: Integer; begin y := 0; while y < Height dobegin x := 0; while x < Width dobegin Canvas.Draw(x, y, Bitmap); x := x + Bitmap.Width; end; y := y + Bitmap.Height; end; end;
procedure TBmpForm.Button1Click(Sender: TObject); begin ScrambleBitmap; Invalidate; end;
// scrambling the bitmap is easy when it's has 256 colors: // we just need to change
each of the color in the palette // to some other value. procedure TB!
mpForm.ScrambleBitmap; var pal: PLogPalette; hpal: HPALETTE; i: Integer; begin pal := nil; try GetMem(pal, sizeof(TLogPalette) + sizeof(TPaletteEntry) * 255); pal.palVersion := $300; pal.palNumEntries := 256; for i := 0 to 255 do begin pal.palPalEntry[i].peRed := Random(255); pal.palPalEntry[i].peGreen := Random(255); pal.palPalEntry[i].peBlue := Random(255); end; hpal := CreatePalette(pal^); if hpal <> 0 then Bitmap.Palette := hpal; finally FreeMem(pal); end; end;
Использование Debug API: пример перехвата вызовов функций Win32 API
Я предпочитаю не писать сухие статьи с кучей теории. Поскольку я люблю читать работающий исходный код, то и здесь будет только исходный код. Все пояснения я буду вставлять прямо в исходник - в виде комментариев. Впрочем, не надейтесь, что вам будет достаточно выдрать отсюда исходник, и он скомпилится. :-) Это не потому, что я специально что-то скрыл, а потому, что я вырезал кучу вспомогательных процедур, которые каждый может написать сам. Если вы, все же, паталогически ленивы - скачайте архив с полными рабочими исходниками. Оттуда точно заработает.
Переход на Kylix для Delphi-программистов
Задача этой книги — познакомить программистов с мощным инструментом разработки приложений — средой Kylix, а также представить готовые решения, которые позволят созданным приложениям нормально работать. Для тех, кто не имеет опыта «общения» с Linux, изложены основы программирования в этой операционной системе. Необходимые для работы с Kylix знания в области синтаксиса языка C, подробное рассмотрение вопросов создания и подключения библиотек, управления процессами, работы с файловой системой и других ключевых для программирования вопросов, а также множество хорошо прокомментированных образцов программного кода делают эту книгу необходимым помощником любого Kylix-программиста.
Автор: Тэйлор Д., Мишель Дж., Джентри Т.
Delphi - Программирование в Delphi Сайт для настоящих программистов ! На этом сайте вы найдёте: множество исходников, документации, компонентов, программ, а также для программистов есть чат, форум, FAQ и многое другое ! Сайт ...
» Оценка сайта: 4
Хокку дня
Соевым соусом морду намажу Сяду в кусты у дороги Чем я не нинзя?
Афоризмы
Не стой на месте, иди, ищи новые... тупики!
Фраза дня
А все-таки она вертится!
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В штате Нью Йорк (США) вам грозит штраф в 25 долларов, если вы на улице будете засматриваться на женщин. Закон особенно строг по отношению к тем, кто оборачивается вслед проходящим дамам. Мужчинам, которые были пойманы на этом дважды, предписывается надевать лошадиные шоры.
В Северной Каролине (США) запрещается использовать слонов для вспашки полей.
И на закуску коротенький анекдот
Жена спрашивает мужа: - Ты меня сильно любишь, дорогой? - Да, как и ты меня. - Ну, знаешь!!!