Autor Beitrag
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
 
Image1.Canvas.Pen.Color := clBlack; 
 // SetBkMode(Image1.Canvas.Handle, TRANSPARENT); 
 // Image1.Canvas.Brush.Style := bsClear; 
 Image1.Canvas.TextOut(2, 3, 'Test');


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Mo 06.10.03 10:39 
îch glaube so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Image1.Canvas.brush.style := bsClear; // <-- hintergrund style setzen

Image1.Canvas.Pen.Color := clBlack; 
// SetBkMode(Image1.Canvas.Handle, TRANSPARENT); 
// Image1.Canvas.Brush.Style := bsClear; 
Image1.Canvas.TextOut(2, 3, 'Test');


viel spass

_________________
mfg.
mâximôv
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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 :wink:

_________________
mfg.
mâximôv
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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.

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: 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.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  with Image1 do
  begin
    Transparent := True;
    // Canvas.Brush.Color setzen, sonst geht's nicht.
    // Egal was für eine Farbe, es nimmt die Farbe nicht an,
    // sondern das Image bleibt so transparent.
    Canvas.Brush.Color := 1; 
    Canvas.FillRect(ClientRect);
    Canvas.TextOut(10,10,'So klappt''s!');
  end;