Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Eigener "Text"-Cursor auf einem TImage (https://www.delphipraxis.net/90905-eigener-text-cursor-auf-einem-timage.html)

guitar1 25. Apr 2007 21:14


Eigener "Text"-Cursor auf einem TImage
 
hi

ich bin gerade dabei, einen Cursor (ähnlich dem in einem edit, etc.) zu programmieren, der auch blinken soll. Das alles soll auf einem TImage geschehen, auf diesem TImage sind auch noch einige Sachen mit Canvas gezeichnet.

hier erst mal der Code den ich schon hab:
Delphi-Quellcode:
procedure Tform1.Cursor (X, Y: Integer);
var
cr: TImage;                         //Image auf welches der Cursor gezeichnet werden soll
begin

  cr:= TImage.Create(Self);
  cr.Parent := self;
  cr.Parent.DoubleBuffered:= true;
  cr.Visible:= true;
  cr.Left := X;                     //Koordinaten der oberen, linken Cursor"ecke"
  cr.Top := Y;
  cr.Width := 1;
  cr.Height := 90;


  if (cursoran mod 2 = 0) then      //cursoran ist eine Integervariable, welche per timer alle 500 ms mit 1 addiert wird
  begin
    cr.Canvas.Pen.Color := clred;  
    cr.Canvas.Pen.Style := psdot;
    cr.Canvas.LineTo(0,90);         //hier wird der Cursor gezeichnet
  end
  else
  begin
    cr.Canvas.LineTo(0,0);
    cr.Transparent:= true;          //hier soll der Cursor "weggeblendet" werden, geht aber irgendwie nicht
  end;

  LinienRefresh;                    //aktuallisiert, den Canvas des unterem Images

end;
so zu meinem Problem:
Auf dem unterem Image sind per Canvas erstellte Linien, wenn nun der Cursor gezeichnet wird, klappt das auch erst einmal, soll er dann aber ausgeblendet werden (er soll ja blinken) bleibt an den Stellen, an welchen er sich mit den Linien geschnitten hat, ein weißes Pixel zurück (die Linien sind nur 1 Pixel dick). Ebenso bleibt ein weißes Pixel oder sogar das komplette "Bild" des Cursors an Ort und Stelle, wenn der Cursor seine Position wechselt.

Bei einem anderen Projekt habe ich die eigenschaft Image.Transparent schon öffters genutzt und dabei wurde der Untergrund wieder sichtbar ?!?!

Hat jemand eine Idee woran das liegen könnte? Oder noch besser hat einer von euch vielleicht noch eine andere Idee einen blinkenden "Text"-Cursor auf einem TImage darzustellen? Vielleicht etwas eleganter als per Canvas.

Schon mal danke im Voraus!

A. Horn

sirius 25. Apr 2007 21:35

Re: Eigener "Text"-Cursor auf einem TImage
 
Und wenn du einfach ein edit drüber legst? Das ist doch die Standard-Vorgehensweise.

guitar1 26. Apr 2007 14:00

Re: Eigener "Text"-Cursor auf einem TImage
 
@ sirius
normaler weiße würde ich das ja auch machen :wink: , aber die sache ist, das ich keinen Text schreibe, sondern Noten (aus der Musik). Diese werden per Canvas dort auf den Untergrund gezeichnet, wo der Cursor ist, deshalb brauch ich einen Cursor, der unabhängig von Text bewegbar ist!

Namenloser 26. Apr 2007 14:05

Re: Eigener "Text"-Cursor auf einem TImage
 
Delphi-Quellcode:
cr.Transparent:= true;          //hier soll der Cursor "weggeblendet" werden, geht aber irgendwie nicht
Wie wärs stattdessen mit
Delphi-Quellcode:
cr.visible := false         //hier soll der Cursor "weggeblendet" werden, geht aber irgendwie nicht
hab den Code jetzt nur überflogen!

guitar1 26. Apr 2007 14:15

Re: Eigener "Text"-Cursor auf einem TImage
 
Zitat:

Zitat von NamenLozer
Wie wärs stattdessen mit
Delphi-Quellcode:
cr.visible := false         //hier soll der Cursor weggeblendet werden, geht aber irgendwie nicht
hab den Code jetzt nur überflogen!

habs gerade mal ausprobiert, eine Besserung des Problems hat sich leider nicht ergeben, jetzt bleibt der Cursor ganz in der "ersten Position", kurz und gut das Blinken bleibt aus, man sieht einfach nur eine Linie die nichts tut ?! :?:

MfG
A. Horn

Apollonius 26. Apr 2007 16:38

Re: Eigener "Text"-Cursor auf einem TImage
 
Probiers mal mit cr.pen.mode:=pmnotXor;

guitar1 26. Apr 2007 20:47

Re: Eigener "Text"-Cursor auf einem TImage
 
ich konnte das problem jetzt zum Glück auch selber lösen, mir ist nämlich auf gefallen, das es mit Visible := true/false , bei andern Images auch geht, also hab ich die Cursor-"Grafik" im OnCrate erstellt und jetzt wird einfach nur zwischen Visible := true und Visible:= false gewechselt. Vermutlich lag das problem darin, dass das Image jedes mal aufs neue per Create erstellt wurde.

Trozdem großes Danke an alle :!:

MfG
A. Horn


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 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