C
Hallo,
ich möchte in Visual C++ 2005 Express auf eine TrackBar zeichnen.
Wenn ich im Paint-Ereignis zeichne, passiert gar nichts, ein Haltepunkt sagt mir auch, dass dieses Ereignis gar nicht ausgelöst wird (obwohl TrackBar dieses Event hat).
Wenn ich über trackBar->CreateGraphics gehe, kann ich zwar auf die TrackBar zeichnen, dann verschwindet das Gezeichnete aber natürlich sobald die TrackBar neu gezeichnet wird.
Außerdem wird so das alte Gezeichnete nicht gelöscht.
Wenn ich dazu vor dem Zeichnen trackBar->Invalidate(); aufrufe, wird die TrackBar zwar neu gezeichnet, aber komischerweise wird der Zeichenbefehl danach auch wieder gelöscht. Hier der CodeSchnipsel:
private: System::Void trackBar_Scroll(System::Object^ sender, System::EventArgs^ e) {
trackBar->Invalidate();
Graphics^ g;
g = trackBar->CreateGraphics();
g->DrawRectangle( gcnew Pen(Color::Red, 4), trackBar->Value*10,5,10,10);
}
Eigentlich würde ich erwarten, dass erst die trackBar neu gezeichnet wird, und danach das Rote Rechteck reingezeichnet wird. Manchmal sieht man es so auch aufblitzen, aber es bleibt nicht da.
Wenn der Befehl trackBar->Invalidate(); weggelassen wird, zeichnet er auch munter Rechtecke (ich will aber immer nur eines).
Viel lieber wäre mir natürlich das ganze in dem PaintEvent der trackBar zu machen, aber das springt wie gesagt gar nicht an.
cadaei
[edit]
<a href= schrieb:
msdn">TrackBar.Paint Event
This event supports the .NET Framework infrastructure and is not intended to be used directly from your code.
Occurs when the TrackBar control is drawn.
(Hervorhebung von mir)
Warum macht die TrackBar beim PaintEvent so eine Ausnahme?
[/edit]