Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблемы и решения в Delphi 10 после обновления Windows 10: как исправить некорректный отображение цвета на кнопке инструмента

Delphi , Графика и Игры , Изображения

В последнее время разработчики, использующие Delphi для создания приложений с графическим интерфейсом, столкнулись с новой проблемой, связанной с изменением внешнего вида кнопок инструментов в режиме выполнения программы. Проблема заключается в том, что изменение изображения кнопки в процессе работы программы больше не функционирует должным образом. Это касается, в частности, изменения цвета прямоугольника на кнопке инструмента, что ранее осуществлялось без проблем.

Описание проблемы

Разработчик использует процедуру для изменения цвета прямоугольника на одной из кнопок инструментов. Процедура корректно работает в программе, которая была добавлена в репозиторий и использовалась ранее, однако при создании новой программы с нуля, с использованием той же процедуры, кнопка отображается белой. Параметры списка изображений и полосы инструментов в обеих программах одинаковы. Возможно, проблема связана с обновлениями Windows, поскольку разработчик использует Windows 10 и Delphi 10.

procedure TANewMain.BtReplaceHighOnClick(Sender: TObject);
var
  ABitmap: TBitmap;
  ARect: TRect;
begin
  ABitmap := TBitmap.Create;
  try
    ImgList.GetBitmap(1, ABitmap);
    ABitmap.Canvas.Brush.Color := ColorToRGB(clRed);
    ABitmap.Canvas.Pen.Color := ColorToRGB(clBlue);
    ARect := Rect(5, 1, 11, 15);
    ABitmap.Canvas.Rectangle(ARect);
    ImgList.ReplaceMasked(1, ABitmap, clWhite);
  finally
    ABitmap.Free;
  end;
end;

Подтвержденное решение

Проблема может быть решена двумя способами:

  1. Отключение тематизации приложения, сняв галочку "Enable Runtime themes" в настройках проекта ("Project - Options - Application"). Однако, это может сделать внешний вид приложения менее привлекательным, так как оно будет выглядеть как разработанное для Windows 95.

  2. Изменение свойств списка изображений (ImageList):

  3. ColorDepth на cdDeviceDependent
  4. DrawingStyle на dsNormal
  5. ImageType на itMask

Изменение этих параметров приводит к тому, что кнопки инструментов отображаются корректно в Windows 10, и, что важно, в Windows 7.

ImgList.ColorDepth := cdDeviceDependent;
ImgList.DrawingStyle := dsNormal;
ImgList.ImageType := itMask;

Альтернативное решение

Также было предложено использовать два списка изображений: один с оригинальными изображениями, другой с уже нарисованным прямоугольником. Это может быть более предпочтительным решением, особенно если часто происходит копирование и модификация изображений, что может привести к снижению качества.

Выводы из обсуждений

Пользователь отметил, что кнопка отражает выбранные цвета фона и текста для выделения текста в RichEdit-контроле, подобно подчеркиванию в кнопке выбора цвета шрифта в Microsoft Word. Проблема решена, и, судя по всему, Windows 10 и Delphi 10 корректно обрабатывают изображения с глубиной цвета 24 бита при отключенной тематизации приложения.

Заключение

Разработчикам, столкнувшимся с подобными проблемами после обновления Windows 10, рекомендуется обратить внимание на настройки тематизации и параметры списка изображений. В случае необходимости, можно рассмотреть альтернативные подходы к изменению внешнего вида кнопок инструментов, например, использование двух списков изображений.

Создано по материалам из источника по ссылке.

Проблема заключается в некорректном отображении цвета на кнопке инструмента в Delphi 10 после обновления Windows 10, что может быть вызвано изменениями в тематизации и параметрах списка изображений.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Изображения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:49:37/0.0038330554962158/0