Delphi World - Изменение палитры при выводе изображения
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Изменение палитры при выводе изображения

Сообщение MS IE: "Узел найден. Что с ним делать дальше?"

Да, это не тривиальная задача! Палитра дочернего MDI-окна попортила нервов не одному мне.

В обработчике сообщения WM_PaletteChanged вы можете убедиться, что видимая TImage.Picture.Bitmap.Palette всегда "реализована". Так..


private

procedure WMPaletteChanged(var Msg: TWMPaletteChanged);
  message WM_PaletteChanged;

...

procedure Form1.WMPaletteChanged(var Msg: TWMPaletteChanged);
begin
  if Msg.PalChg <> Form1.Handle then
  begin
    PaletteChanged(true);
    Msg.Result := 0;
  end;
end;

Теперь вы можете масштабировать неотображенное изображение как вы хотите и не иметь проблем. Единственное, о чем вам необходимо помнить, если вы хотите вывести неотображенное изображение на видимый TImage, вам необходимо вызвать PaletteChanged снова после того, как изображение выведено. С кодом, который мы использовали...


Image1.Picture.Bitmap := obitmap;
PaletteChanged(true);

Если вы не делаете этот вызов, изображение отобразится с неправильной палитрой.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования