AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Cursor Flickert über TImage

Ein Thema von Memnarch · begonnen am 3. Dez 2010 · letzter Beitrag vom 8. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

Cursor Flickert über TImage

  Alt 3. Dez 2010, 13:24
Tag allerseits.
Hab gerade nochn Nebenprojekt angefangen. Folgendes:
Um eine Animation darzustellen, zeichne ich ca 20Mal pro sekunde auf ein Timage.
Damit der alte Hintergund verschwindet, nutze ich FillRect und zeichne dann neu.

Problem:
Während die Darstellung auf dem TImage einwandfrei ist, Flickert der mouse Cursor wenn er sich darüber befindet o.O.
Hab schon versucht die EraseBackground message abgzufangen, aber das brachte auch nichts(Sowohl bei TImage, als auch bei meiner Form). Form auf DoubleBuffered zu stellen brachte auch keine veränderung...außer das die CPU gequält wird >.<

Überlappt ein Menü das TImage, wird das Menü normal angezeigt. Einziges sorgenkind ist der Cursor.

Jemand eine Idee?

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 13:32
Ein TImage ist eigentlich nicht dafür gedacht, das dargestellte Bild ständig zu ändern. Zeichne doch lieber auf ein Paintbox-Canvas. In Kombination mit DoubleBuffered könnte das dein Problem beheben.

mfg
Patti
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 13:43
Nein leider nicht.
TPaintBox selbst hat kein DBuffered und das setzten von DBuffered bei der Form bringt leider auch nichts.

Noch schlimmer: Dann flackert sogar der inhalt der paintbox.


MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 14:38
DoubleBuffered macht zwar ähnliches, aber vielleicht kannst Du in ein Bitmap zeichnen und das Ergebnis auf Deinen PaintBox.Canvas kopieren (ohne FillRect). Einen Versuch ist es vielleicht wert...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 14:50
aber vielleicht kannst Du in ein Bitmap zeichnen und das Ergebnis auf Deinen PaintBox.Canvas kopieren (ohne FillRect). Einen Versuch ist es vielleicht wert...
Das ist eigentlich die angesehene vorgehensweise, wenn man den Hintergrund immer wieder löscht.

Wenn du es schaffst alles neu zu zeichnen, ohne den Hintergrund vorher zu löschen und ohne Pixel mehrfach umzufärben, wärend eines Zeichenvorgangs, dann kannst du auch direkt auf das Canvas zeichnen ... also bei dieser hohen Bildwiederholungsrate und in dem letzen Sonderfall würde sich das Bitmap nicht wirklich lohnen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#6

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 14:55
Wie egsagt, darstellung des Bildes ist tadellos, aber der CURSOR flackert. Auf den habe ich keinen einfluss. Das macht garkeinen sinn *HEUL*

Ich fange die message zum löschen des hintergrundes ab und setze

Message.result := 1;

Aber trotzdem flackert der cursor, was bedeutet dass wohl doch gelöscht wird >.<.

Ich versteh es schon deshalb nicht, weil die from, ihr inhalt und alles normal gezeichnet wird, ohne flackern, selbst wen elemente(menü) ins TImage ragen beim aufklappen.
Nur der Cursor is auf lsd v.v

EDIT: Oder kann ich den windows Cursor Unsichtbar machen? Dann würd ich meinen eigenen zeichnen.
EDIT2: Mit der paintbox hatte ich es schon ausprobiert. Hab BitBlt genutzt. Trotzdem flackerte der cursor wieder.
EDIT3: ja Cursor kann man wohl unsichtbar machen...aber mir fällt gerade ein ich hab ja auch noch ne MainMenu bar


MFG
Memnarch

Geändert von Memnarch ( 3. Dez 2010 um 15:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 15:11
Ein TImage ist eigentlich nicht dafür gedacht, das dargestellte Bild ständig zu ändern.
Dito.

Verwende Eine PaintBox in Zusammenhang mit einem Bitmap und das Flackern der Maus hört auf.

bzw. suche mal nach Hier im Forum suchenOffscreenbitmap
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#8

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 15:13
Ich hatte breits ausprobiert paintbox zu nutzen.

Dabei hatte ich zum schnellen Test die PaintBox verkleinert, und immerwieder eine bitmap selbiger größe hineingezeichnet, die maus flackerte.

ich nutze BitBlt, oder sollte man was anderes in dem fall nutzen?

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 15:15
Um welches Betriebssystem handelt es sich denn eigentlich?

Unter Win98 würde sich vermutlich das Image neu zeichnen und sich danach der Cursor neu drübermalen ... das Ergebnis wäre ein starkes Flackern.
Wärend unter Win7 eventuell der WindowsDesktopManager eine puffernde Wirkung haben könnte und es dort nicht blinkt




Das TImage macht nunmal ganz viel im Hintergrund.
Und es ist eben nicht auf so schnelle Veränderungen ausgelegt (die ist sogar verhältnismäßig langsam und resourcenfressend) ... hierfür gibt es nicht grundlos die TPaintbox.

Hier kann es z.B. sein, daß das TImage beim Neuzeichnen auf den Cursor zugreift und diesen eventuell ganz kurz ändert. (z.B. für eine Microsekunde die Sanduhr, falls es länger dauert)

[edit]
hmmmmm?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#10

AW: Cursor Flickert über TImage

  Alt 3. Dez 2010, 15:30
Es Handelt sich um WinXP.

EDIT: ich hab ne Idee, jemand von euch schreibt ne DemoApp mit ner TPAintBOx, bei der der Cursor nicht flackert. Packts für mich inen rar und läds hoch.
Dann könnte ich mal austesten ob mein prog oder windows drans chuld ist.

MFG
Memnarch

Geändert von Memnarch ( 3. Dez 2010 um 15:42 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:41 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