Получить Bitmap радио кнопокDelphi , Графика и Игры , BitmapПолучить Bitmap радио кнопок
Оформил: DeeCo { Diese Funktion liefert ein Bitmap eines RadioButton. Parameter: Checked = RadioButton ausgewahlt Hot = RadioButton aktiv (funktioniert nur unter XP und bewirkt z.B. unter Luna einen hellroten Rand) BgColor = Hintergrundfarbe des RadioButton Wichtig: Die Bitmap sollte nach Ausfuhrung der Funktion wieder freigegeben werden! XP-Styles werden erst ab Delphi7 unterstutzt. } Code:{$IFDEF VER150} uses Themes; {$ENDIF} function GetRadioButtonBitmap(Checked, Hot : boolean; BgColor : TColor): TBitmap; const CtrlState : array[boolean] of integer = (DFCS_BUTTONRADIO, DFCS_BUTTONRADIO or DFCS_CHECKED); var CBRect : TRect; {$IFDEF VER150} Details : TThemedElementDetails; {$ENDIF} BgOld : TColor; ChkBmp : TBitmap; ThemeOK : boolean; x, x2, y : integer; begin Result := nil; try Result := TBitmap.Create; ChkBmp := TBitmap.Create; ThemeOK := False; with Result do begin Width := 16; Height := 16; with Canvas do begin Brush.Color := BgColor; FillRect(ClipRect); ChkBmp.Assign(Result); CBRect := ClipRect; CBRect.Top := 1; CBRect.Left := 1; {$IFDEF VER150} if ThemeServices.ThemesAvailable then begin //ab WinXP if Checked = True then begin if Hot = True then Details := ThemeServices.GetElementDetails(tbRadioButtonCheckedHot) else Details := ThemeServices.GetElementDetails(tbRadioButtonCheckedNormal); end else begin if Hot = True then Details := ThemeServices.GetElementDetails(tbRadioButtonUncheckedHot) else Details := ThemeServices.GetElementDetails(tbRadioButtonUncheckedNormal); end; ThemeServices.DrawElement(Handle, Details, CBRect); //Prufen ob es tatsachlich geklappt hat (Win2003 liefert leere Images!) for x := 15 downto 0 do for y := 15 downto 0 do if ChkBmp.Canvas.Pixels[x, y] <> Pixels[x, y] then begin ThemeOK := True; break; end; end; {$ENDIF} if ThemeOK = False then begin //alles vor WinXP CBRect.Left := ClipRect.Left + 2; CBRect.Right := ClipRect.Right - 1; CBRect.Top := ClipRect.Top + 2; CBRect.Bottom := ClipRect.Bottom - 1; DrawFrameControl(Handle, CBRect, DFC_BUTTON, CtrlState[Checked]); end; end; end; finally end; end; Перевод контента на русский язык: Функция Delphi, которая генерирует битмап-изображение радио-кнопки. Функция принимает три параметра: Функция создает новый битмап-объект с помощью компонента Далее функция использует свойство Затем функция рассчитывает прямоугольник для области управления радио-кнопкой (CBRect) и устанавливает его координаты. Если используется Delphi 7 или более поздняя версия ( Если система не поддерживает темы или если тема недоступна ( Наконец, функция возвращает битмап-изображение радио-кнопки. Пользователь должен освободить битмап-объект после использования. В улучшенной версии кода я сделал следующие изменения:
Обратите внимание, что функция все еще использует старый стиль Delphi 7 ( Функция GetRadioButtonBitmap получает битмап радио-кнопки с параметрами checked, hot и bgColor, учитывая поддержку тем для Windows XP. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |