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