
Давайте сегодня рассмотрим эту, далеко не тривиальную задачку, заставим наш мозг поднапрячься, ведь палитра 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);
В том случае, когда Вы данный вызов не сделаете, изображение ваше будет отображатся с неправильной палитрой.
Спонсор поста: ищете на просторах интернета качественную SEO-программу? CS Yazzle – это программа для раскрутки сайта купить которую всегда есть возможность с помощью ресурса предназначенного для любителей и профессионалов продвижения и оптимизации веб-ресурсов в Интернете - seo-zar.ru!