| Autor |
Beitrag |
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Mo 06.10.03 10:06
Hi!
Wenn ich Text auf ein TImage ausgebe, wird der Bildhintergrund weiss. Wie kann ich ihn transparent behalten? Folgender Code funktioniert nicht:
Delphi-Quelltext 1: 2: 3: 4: 5:
| Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.TextOut(2, 3, 'Test'); |
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Mo 06.10.03 10:39
îch glaube so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| Image1.Canvas.brush.style := bsClear; Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.TextOut(2, 3, 'Test'); |
viel spass
_________________ mfg.
mâximôv
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mo 06.10.03 12:00
Hallo,
am einfachsten geht es, wenn Du die Eigenschaft Transparent des Image-Objekts auf True setzt.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Mo 06.10.03 14:55
Er will ja das die der schrift-hintergrund tranzparent ist...und nicht das bil, wo die schrift draufgemahlt wird 
_________________ mfg.
mâximôv
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mo 06.10.03 15:04
Hallo,
@maximus:
| toms hat folgendes geschrieben: | | Wenn ich Text auf ein TImage ausgebe, wird der Bildhintergrund weiss |
Genau das wird durch meinen Tipp vermieden. Falls Du es nicht glaubst, kannst Du es ja ausprobieren.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Mo 06.10.03 16:42
Mal angenommen er hat ein bild mit seiner grinsenden fresse drauf...*ähem*...und er möchte auf seine stirn 'Superman' schreiben, dann würdest du mit 'transparent' nix eirreichen...vielleicht, dass seine stirn durchsichtig ist und in dem durchsichtigen rechteck 'Superman' steht.
was soll das denn bitte bringen  ...die vorgeschlagene lösung funktioniert auf jedenfall
_________________ mfg.
mâximôv
|
|
toms 
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Mo 06.10.03 18:08
Danke für die Antworten. Jedoch funktioniert keine!
Die Hintergrundfarbe des Canvas bleibt immer noch weiss,
egal ob ich den Brush.Style verstelle oder die SetBkMode() verwende,
oder das Bild auf transparent stelle.
Habe auch schon alle Vorschläge vor dem Posten durchprobiert.
Noch andere Ideen?
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Mo 06.10.03 18:49
Verzichte auf die VCL Routinen, die sind in diesem Falle imho grütze. Bei mir funktioniert es via setBKMode() und DrawText() er API.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| with Sender.Canvas do begin SetBkMode(Handle,TRANSPARENT); SetTextColor(Handle,clWhite); DrawText(Handle,@s1[1],length(s1),NameRect,dt_left); SetTextColor(Handle,clBlack); DrawText(Handle,@S2[1],length(S2),Rect,dt_left); end; | grez
msch
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|
toms 
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Mo 06.10.03 19:04
thx für den Code aber der Test war auch negativ.
Habe aber unterdessen die Lösung (durch probieren) selber gefunden ,
kann aber nicht ganz nachvollziehen, warum so.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| with Image1 do begin Transparent := True; Canvas.Brush.Color := 1; Canvas.FillRect(ClientRect); Canvas.TextOut(10,10,'So klappt''s!'); end; |
|
|