Einzelnen Beitrag anzeigen

sonny2007

Registriert seit: 27. Aug 2009
39 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

UpdateLayeredWindow - DrawThemeTextEx

  Alt 12. Sep 2017, 21:47
Hallo Delphianer,

ich stehe vor einem kleinen Problem.
Mein Ziel ist es Schrift mit GlowEffect oder weichem Schatten zu zeichnen.

Dazu benutze ich DrawThemeTextEx mit UpdateLayeredWindow.
An sich funktioniert es scheinbar , nur das Ergebnis läßt zu wünschen übrig.

Auf dunklem Hintergrund sieht es folgendermassen aus - so wie gewollt.
https://imgur.com/a/jiVYd

Auf weißem Hintergrund sieht es dann folgendermassen aus - so wie ich es nicht möchte .
https://imgur.com/a/fPSKn

Der weiße hintergrund stammt von einem anderen Fenster.

Hier der verwendetete Code.
Delphi-Quellcode:
var
  R: TRect;
  ThemeData: HTHEME;
  Opts: TDTTOpts;
begin
  R := Rect(10, 10, 150, 30);

  OffsetRect(R, 10, 0);
  ThemeData := OpenThemeData(Handle, 'WINDOW');

  Opts.dwSize := SizeOf(Opts);
  Opts.crText := clREd;
  Opts.iTextShadowType := TST_CONTINUOUS;
  Opts.ptShadowOffset := Point(1, 1);
  Opts.fApplyOverlay := true;
  Opts.iGlowSize := 1;

  Opts.dwFlags := DTT_TEXTCOLOR or DTT_SHADOWTYPE or DTT_SHADOWCOLOR
      or DTT_SHADOWOFFSET or DTT_GLOWSIZE;

  DrawThemeTextEx(0, Bitmap.Canvas.Handle, TEXT_BODYTITLE, TS_NEARHOT,
      'Dies ist ein Test', -1, 0, @R, Opts);

  CloseThemeData(ThemeData);

  SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or
    SWP_NOMOVE or SWP_NOSIZE);

  UpdateLayeredWindow(Handle, 0, nil, @BitmapSize, Bitmap.Canvas.Handle,
    @BitmapPos, 0, @BlendFunction, ULW_ALPHA);
Wie kann ich so etwas vermeiden ?

Grüße
sOn
Miniaturansicht angehängter Grafiken
kcrmpyh.png   tjxdvtv.png  

Geändert von mkinzler (13. Sep 2017 um 07:20 Uhr) Grund: Bilder von externen Hoster als Anhang an Beitrag angefügt
  Mit Zitat antworten Zitat