Autor Beitrag
Papa Bravo
Hält's aus hier
Beiträge: 3

Win XP
Delphi 7
BeitragVerfasst: Mi 02.06.04 19:52 
Hallo zusammen,

ich möchte gern einen kleinen Instrumentenflugtrainer programmieren. Dazu soll auf einer Bitmap, die den Instrumenthintergrund zeigt mit Canvas ein Zeiger gezeichnet werden, der den aktuellen Wert auf der Bitmap anzeigt (beim Variometer zum Beispiel die Höhenänderung).

Soweit klappt alles, nur bekomme ich den Zeiger nachdem er einmal gezeichnet ist, nicht mehr weg. Bekommt das Instrument einen neuen Wert, erscheint der Zeiger logischerweise daneben dann noch einmal, bis das gesamte Instrument über kurz oder lang von der Farbe des Zeigers bedeckt ist.

Wie bekomme ich den Zeiger wieder weg, nachdem er gezeichnet wurde?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure tzeiger.vario_zeiger;
begin
  with form1.Canvas do
    begin
      moveto(x,y);
      lineto(round(x-dx),round(y+dy));
  end;
end;

dx und dy werden jeweils extern berechnet. Meine Versuche, den Zeiger wegzubekommen möchte ich euch gerne ersparen ;) , es ging ja nicht.

Vielen Dank
MfG

Philipp

_________________
Gartenzwerge haben rote Mützen, damit sie beim Rasenmähen nicht überfahren werden.
Killian2004
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72

Vista Business x64
Delphi 7 Ent. RAD Studio 2009
BeitragVerfasst: Do 03.06.04 11:01 
Titel: Zeiger
Du musst das Property Pen deines Canvas modifizieren.

Dazu ändere den Parameter bei "Mode" von pmCopy zu pmXor/pmNotXor. Eines von beiden geht definitiv, weiß jetzt bloß nicht genau welches. Steht aber in der Delphi Hilfe erklärt, was die einzelnen Parameter bewirken. Da noch mal nachlesen.

mfG, Killian

_________________
Die Antwort ist 17, aber wie lautet die Frage?
sourcehunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: Fr 04.06.04 20:06 
Falls das mit der property nicht klappt, probiermal das Hintergrundbild noch einmal in den Canvas zu schreiben und dann erst den Zeiger. Möglicherweise solltest du das aber vorher in einer unsichtbaren Zeichenfläche, einem sogenannten Framebuffer, schreiben und dann in den Anzeige-Canvas kopieren, sonst könnte es unter Umständen flackern.

_________________
Linux und OpenSource rulez!
Papa Bravo Threadstarter
Hält's aus hier
Beiträge: 3

Win XP
Delphi 7
BeitragVerfasst: Mi 16.06.04 15:19 
Danke,

das mit dem Neuzeichnen ber Bitmap hat wunderbar geklappt, mit dem flackern hattest du leider recht.
Ich habe in der Delphi-Hilfe den Befehl zum laden in den Arbeitsspeicher gefunden, kann damit aber nichts anfangen.
Zu der Methode mit dem Framebuffer: die Bitmap einfach in ein unsichtbares Image laden? Wenn ich das dann in das richtige kopiere, flackert es nicht mehr?

MfG

Philipp

_________________
Gartenzwerge haben rote Mützen, damit sie beim Rasenmähen nicht überfahren werden.
sourcehunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: Fr 18.06.04 21:24 
Eingentlich dürfte es dann nicht mehr flackern, denn diese Technick wird auch bei vielen Spielen eingesetzt (vieleicht sogar bei allen?).

_________________
Linux und OpenSource rulez!
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Fr 18.06.04 23:31 
Papa Bravo hat folgendes geschrieben:
mit dem flackern hattest du leider recht.

versuchs mal mit form1.doublebuffered:=true;
Segelflieger
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124

WinXP Pro
D7 Prof
BeitragVerfasst: Sa 19.06.04 00:01 
@Fiji:

hast du bei WinXP keine Probleme mit DoubleBuffered? Bei mir werden da Panels und Formularhintergründe nicht richtig angezeigt..

_________________
Früher hatten die Menschen Angst vor der Zukunft. Heute muss die Zukunft Angst vor den Menschen haben.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Sa 19.06.04 00:28 
nee, hab da keine probleme damit...
hast du XP aufm neuesten SAtnd und auch relativ aktuelle Grafiktreiber?
Papa Bravo Threadstarter
Hält's aus hier
Beiträge: 3

Win XP
Delphi 7
BeitragVerfasst: So 20.06.04 19:38 
@fiji-fighter

Danke, läuft jetzt alles ohne Flackern :D . Habe auch keine Probleme mit Panels und Formularhintergründen.

Mfg
Philipp

_________________
Gartenzwerge haben rote Mützen, damit sie beim Rasenmähen nicht überfahren werden.