AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)
Thema durchsuchen
Ansicht
Themen-Optionen

DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

Ein Thema von Delphi-Freak · begonnen am 2. Apr 2006 · letzter Beitrag vom 7. Mai 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#11

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 3. Apr 2006, 16:35
Ich naochmal


Delphi-Quellcode:
implementation

{$R *.dfm}

function DrawShadowText(hdc: HDC; pszText: LPCWSTR; cch: UINT;
   const pRect: PRect; dwFlags: DWORD; crText: COLORREF;
   crShadow: COLORREF; ixOffset: Integer;
   iyOffset: Integer): Integer; stdcall; external 'ComCtl32.dll';


function _DrawShadowText(ACanvas: TCanvas; x,y: Integer; AText: LPCWSTR;
  TextColor, ShadowColor: TColor; ShadowSpaceX, ShadowSpaceY: Integer): Integer;
var TextRect: TRect;
begin
   TextRect := Rect(x, y, x + ACanvas.TextWidth(AText),
     y + ACanvas.TextHeight(AText));

   Result := DrawShadowText(ACanvas.Handle, AText, length(AText), @TextRect, 0,
               COLORREF(TextColor), COLORREF(ShadowColor),
               ShadowSpaceX, ShadowSpaceY);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Font.Name := 'MS Sans Serif';
  Canvas.Font.Size := 8;
  Canvas.Font.Style := [];

  _DrawShadowText(Canvas, 10,25, 'Hallo, ich bin ein Text mit Schatten.',
    clBtnText, clGray, 3, 3);


  Canvas.Font.Name := 'Arial';
  Canvas.Font.Size := 14;
  Canvas.Font.Style := [fsBold];

  _DrawShadowText(Canvas, 10, 50, 'Ich auch !', clRed, clBlue, 5, 2);

  Canvas.Font.Name := 'Arial';
  Canvas.Font.Size := 10;
  Canvas.Font.Style := [];

  _DrawShadowText(Canvas, 10, 80, 'Na und ich erst !', clBlue, clBlack, 2, 2);
end;
Miniaturansicht angehängter Grafiken
preview_465.gif  
Angehängte Dateien
Dateityp: zip drawshadowtext_source_283.zip (4,3 KB, 15x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 3. Apr 2006, 18:04
Der überflüssige Cast ist irgendwie übrig geblieben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#13

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 3. Apr 2006, 18:13
Tschuldigung, dass ich mich jetzt nicht gemeldet habe... ich häng nur momentan mit der Schule etwas dran
Also VIELEN DANK euch beiden!!
Ich werde mir das in ein paar Tagen (leider erst, vorher komm ich nicht dazu...) anschauen; aber nach dem Beweis-"foto" und Source kann nichts mehr schief gehen. Sonst meld ich mich halt wieder.

Also nochmal VIELEN DANK & LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#14

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 7. Apr 2006, 19:55
Also, es funzzt wirklich
Habs aber nicht anders erwartet

Habe das ganze jetzt noch in eine Unit gepackt (die auch die Ressourcen einbindet, müssen halt vorhanden sein) und die Funktion, die man aufruft, heißt jetzt DrawShadowText und die andere (direkt aus der DLL) _DrawShadowText. Außerdem hat die Funktion so manches Problem mit einer schwarzen Schriftfarbe, dann wird kein Schatten gezeichnet -> Abhilfe: wenn Schriftfarbe schwarz dann auf $00010101 gesetzt, man sollte also keinen Unterschied sehen, außer natürlich, dass der Schatten dann doch gezeichnet wird

Also noch mal DANKE für eure Hilfen & LG, ich

PS: Nochmal für die, die sich mit Ressourcen etc. nicht so gut auskennen (wo ich eigentlich auch dazu gehöre), man braucht nur die 4 Dateien ins lib-Verzeichnis kopieren, die Unit einbinden und dann natürlich die Funktion auch verwenden...

[edit]So manch kleiner Fehler ausgebessert...[/edit]

[nochmaledit]Ich seh gerade noch im Screenshot oben, dass das mit schwarz irgendwie doch funktionieren dürfte, außerdem hat mein Rechner das ursprüngliche Beispiel türkis gezeichnet und nicht schwarz, keine Ahnung wieso [/nochmaledit]
Angehängte Dateien
Dateityp: zip udrawshadowtext_317.zip (1,6 KB, 21x aufgerufen)
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#15

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 7. Apr 2006, 20:02
Wär das nicht evtl. etwas für die CodeLib?
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#16

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 7. Apr 2006, 20:07
Stimmt... eigentlich schon, fragt sich nur, mit oder ohne möglicherweise unnötiges schwarz-Workaround
Könnte wer anderer das vlt. auch noch testen, obs bei ihm mit schwarzer (wirklich $00000000) Schriftfarbe geht?

LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#17

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 15. Apr 2006, 18:52
Hi, ich nochmal...

Ich verschlimmbessere gerade experimentell das Aussehen eines Programms mit MSDN-Library durchsuchenDrawShadowText.

Jetzt hänge ich wieder an der selben Stelle wie schon einmal, kann mir jemand bitte mal sagen was der Parameter dwFlags anstellt ?

Code:
int DrawShadowText(     
    HDC hdc,
    LPCWSTR pszText,
    UINT cch,
    const RECT *pRect,
    [b]DWORD dwFlags,[/b]
    COLORREF crText,
    COLORREF crShadow,
    int ixOffset,
    int iyOffset
);
Zitat von MDSN Home:
dwFlags
DWORD that specifies how the text is to be drawn.
Aha !?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#18

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 15. Apr 2006, 19:03
Hat das vlt. mit links- bzw. rechtsbündig etc. zu tun - das was bei TextOut der Parameter uFormat macht, die Typen passen zusammen (DWORD bzw. UINT)...

LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#19

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 15. Apr 2006, 19:42
Ja natürlich, da ich das Ausgaberechteck immer angepasst habe ist mir das nicht aufgefallen...
Also TA_BOTTOM, TA_TOP, TA_CENTER, TA_LEFT, und TA_RIGHT (etc.) funktionieren.

Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#20

Re: DrawShadowText in Delphi (commctrl.h/ComCtl32.dll)

  Alt 15. Apr 2006, 19:47
Was ist es dann eigentlich für vertikales Zentrieren (TA_VCENTER dürfte er nicht kennen...)

LG, ich
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 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