Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   UpdateLayeredWindow - DrawThemeTextEx (https://www.delphipraxis.net/193818-updatelayeredwindow-drawthemetextex.html)

sonny2007 12. Sep 2017 21:47


UpdateLayeredWindow - DrawThemeTextEx
 
Liste der Anhänge anzeigen (Anzahl: 2)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz