【问题标题】:How to change theme DrawThemeTextEx font color?如何更改主题 DrawThemeTextEx 字体颜色?
【发布时间】:2011-10-08 03:55:19
【问题描述】:

我正在使用DrawThemeTextEx 来绘制文本。我正在尝试使用DTTOPS 结构的crText COLORREF 成员以特定颜色绘制它:

procedure DrawThemeText(dc: HDC; text: WideString; font: TFont; pt: TPoint; foreColor: COLORREF);
var
   R: TRect;
   dttOpts: TDttOpts;
   hOldFont: HFONT;
   oldColor: COLORREF;
begin
   foreColor := $FF00FF00; //bright lime green
   font.

   R := Rect(pt.x, pt.y, $7fffffff, $7fffffff);

   ZeroMemory(@dttOpts, SizeOf(TDTTOpts));
   dttOpts.dwSize := SizeOf(TDTTOpts);
   dttOpts.iGlowSize := 1;
   dttOpts.crText := foreColor;
   dttOpts.dwFlags := DTT_GLOWSIZE or DTT_TEXTCOLOR;

   hOldFont := SelectObject(dc, font.Handle);
   oldColor := SetTextColor(dc, foreColor);
   try
      hr := DrawThemeTextEx(ThemeServices.Theme[teWindow], DC, WP_CAPTION, CS_ACTIVE, 
            PWideChar(Text), Length(Text),
            DT_LEFT or DT_TOP or DT_SINGLELINE or DT_NOPREFIX, R, dttOpts);
   finally
      SetTextColor(dc, oldColor);
      SelectObject(dc, hOldFont);
   end;

不幸的是,文本颜色总是黑色,而不是我的代码指定的亮石灰绿色:

可以改变selecting the new font into the device context使用的字体,即:

   SelectObject(dc, font.Handle);

但既不SetTextColor,也不设置DTTOPS结构的crTextDTT_TEXTCOLOR选项,改变使用的文本颜色。

令人困惑的是DTTOPS structure allows me to specify a color:

typedef struct _DTTOPTS
{
    DWORD             dwSize;              // size of the struct
    DWORD             dwFlags;             // which options have been specified
    COLORREF          crText;              // color to use for text fill
    COLORREF          crBorder;            // color to use for text outline
    COLORREF          crShadow;            // color to use for text shadow
    ...

与 DTT_TEXTCOLOR 标志一起表明我正在使用该成员:

   #define DTT_TEXTCOLOR       (1UL << 0)      // crText has been specified

我想要完成的事情 已记录在案,但它无法正常工作。显然我做错了什么。

使用DrawThemeTextEx绘制文字时如何指定文字颜色

【问题讨论】:

  • 您是在玻璃上还是在普通的非玻璃控制画布上绘画?
  • 在这个例子中,我在普通(非玻璃)画布上绘画。

标签: delphi winapi themes uxtheme


【解决方案1】:

crText 成员是 ColorRefMSDN says高位字节“必须为零”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多