Die Grafiken flackern!
-
Hallo alle zusammen,
kann mir jemand Rat geben wie ich die Bitmaps in BitBtn, die abwechselnd abhängig von Position der Mauscursors im BitBth geladen werden, zu Ruhe bringen kann, die flackern furchtbar. Refresh() hilft auch nicht.
[code] void __fastcall TForm1::BitBtn1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { Form1->BitBtn1->Glyph->LoadFromFile(ExtractFilePath(Application->ExeName)+"Stop_1_1_32.bmp"); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { Form1->BitBtn1->Glyph->LoadFromFile(ExtractFilePath(Application->ExeName)+"Stop_1.bmp"); } //---------------------------------------------------------------------------[/code]
Mfg
Alex
-
Form1->DoubleBuffered = true;
-
kannst es mit ein bisschen dämpfen mit:
Form1->DoubleBuffered=true;
-
Es wäre es auch günstiger, wenn du deine Grafiken im Speicher hälst, anstatt sie immer neu von Platte zu laden.
-
und vor allem bei jedem MouseMove?
ist doch komplett unnötig
-
wie meint Ihr kann ich die Grafiken nur ein mal in Speicher laden?
Mit welche Funktion geht das?Mfg
Alex
-
grafik laden(bmp)
Graphics::TBitmap *bild = new Graphics::TBitmap();
bild->LoadFromFile("bild.bmp");zeichnen dann z.B mit
Form1->Canvas->Draw(0,0,bild);
-
Ich glaube das mit dieser Funktion kann ich mein Ziel nicht verwirklichen.
Ich muss die zwei verschidenen Grafiken in Button BtmBtn laden abhängig von der Position des Mauscursors, sehe oben?Mfg
Alex
-
Aber doch nicht bei jeder Bewegung der Maus.
Angenommen, dein Button ist 75 Pixel breit, dann wird mit deinem Code beim Überfahren mit der Maus 75 mal das Bild neu geladen, und das auch noch jedesmal aus der Datei.
Von dem gleichen Theater bei der Form ganz zu schweigen.Was du brauchst sind OnMouseEnter/OnMouseLeave-Ereignisse, in denen du das geweils gewünschte Bild lädst. Die von dir genannten Komponenten bringen diese Events von Haus aus nicht mit, du musst sie also selbst erstellen. Einen Ansatz dazu findest du u.a. hier:
-
ich habe mir die Beiträge angesehen.
Gibt es eine einfachere Funktion, die nur x und y Position des Mauscursors zurückliefert?Mfg
Alex
-
wieso einfach wenn es kompoliziert und resourcenfressend geht?
liess bitte den Beitrag von Jansen und sein verlinkter Thread nochmals gut durch.
und wenn du verständnisprobleme hast, dan frag.