Autor Beitrag
Dabster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Mi 05.05.04 19:53 
Hallo Leute!

Ich versuche mich zur Zeit mit der Canvas-Komponente. Nun steh ich vor dem Problem, bei Ausgabe eines Textes mit der TextOut-Prozedur auf dem Desktop, dass ein Hintergrund hinter den Text gelegt wird - ich hätte aber gerne, dass nur der Text ohne eine Farbe dahinter angezeigt wird. Geht das? Wenn ja, wie?! :)

Danke im Vorraus
Tom
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Mi 05.05.04 21:52 
Es gibt keine Canvas Komponente, sondern nur Canvas Objekt/Klasse.

Nicht Canvas willst du mit einem transparentem Hintergrund, sondern den ausgegebenen Text.

Das was du brauchst müßte Style sein, bzw. Brush.Style := bsClear;

Damit schaltest du es auf durchsichtig.

ausblenden Delphi-Quelltext
1:
2:
  Canvas.brush.Style := bsClear;
  Canvas.TextOut(1010'Hallo Welt.');

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
Dabster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Do 06.05.04 16:08 
Hi!

Danke für die Verbesserungen! :)

Ja das habe ich gestern nach dem Forum-Eintrag noch selber rausgefunden...aber nun habe ich ein anderes Problem. Wenn ich den Text ausgeben lasse, bleibt er bestehen bis ich ein anderes Fenster darüberschiebe - also in dem Sinne ein anderes Canvas drüberlege. Kann ich es bewerkstelligen, dass der Text nach z.B. 2 Sekunden verschwindet, ohne ihn manuell zu "entfernen"?

Danke im Vorraus
Tom
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Do 06.05.04 19:03 
Nein, zumindest nicht über Canvas, bzw. nicht mit TextOut.

Das einzige was du machen kannst ist den Bereich von TextOut zu berechnen. Das kannst du mit: Canvas.TextWidth und Canbas.TextHeight. Mit den X und Y Werten reicht das um einen Rect -Bereich zu brechnen. Zuerst also einen Canvas Bereich kopieren. Dann dein Text ausgeben und dann nach zwei Sekunden den kopierten Bereich wieder einfügen, bzw. überschreiben.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
Dabster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Sa 08.05.04 13:38 
Hi!

Also ich hab das jetzt mal mit der CopyRect-Funktion probiert, aber da kann der kopierte Bereich nur in dem Form und nich aufm Desktop angezeigt werden (dem Canvas hab ich schon das Handle vom Desktop zugewiesen). Wie geht das also?! :)

Danke im Vorraus
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Sa 08.05.04 13:54 
Tschuldigung, aber ich will nicht ständig hinterher laufen. Du hast ein Frage gestellt und ich hab eine Antwort gegeben wie es geht. Das wird aber anscheinend eine Geschichte ohne Ende. Jetzt spielt plötzlich der Desktop eine Rolle.

Aber ein Tip zu Schluß: Canvas ist Canvas und alles ist Canvas.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
Dabster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Sa 08.05.04 17:05 
Wenn du den ersten Beitrag ordentlich gelesen hättest, wüsstest du, dass es mir um den Desktop ging.