Laden...

Flackerndes UserControl

Erstellt von syn87 vor 14 Jahren Letzter Beitrag vor 14 Jahren 989 Views
S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 14 Jahren
Flackerndes UserControl

Hallo Jungs,

nicht gleich in Panik ausbrechen. Ich hab das Forum schon durchsucht 😃 Es geht um folgendes: Ich bin gerade dabei ein neues UserControl zu entwerfen. Im Wesentlichen soll es aehnlich aufgebaut sein wie ein Sequencer aus dem Musiktool Bereich (z.b. "Cool Edit"). Dabei sollen die einzelnen Frames beliebig verschiebar und auch größenänderbar sein. Nun gestalte ich mein UserControl sehr frei. Das heisst man kann von einer Klasse FrameBase erben, die man dann selber im Designer vervollstaendigen kann. Weiterhin besitzt FrameBase verschiedene Properties, die mir jeweils die Controls für das Verschieben und das Vergrößern/Verkleinern liefern. Ich setze die MouseDOwn/Up/Move Events also erst später im eigenen Control. Das Verschieben klappt wunderbar und großteils auch flackerfrei, aber das Vergrößern macht Probleme. Ich hab jetzt schon viele Beiträge gelesen zum Thema flackerfrei etc. allerdings laufen diese meines Erachtens nach immer auf eigenes Zeichnen hinaus. Für potentielle Nutzer meines UserControls wäre das natuerlich nich so schoen, da man das ganze dann nich mehr ueber den Designer entwerfen koennte. Könnt ihr mir ausser DoubleBuffered etc. noch weitere Tipps geben?

Gruß

Gelöschter Account
vor 14 Jahren

zeig mal deine zeichenroutine. dann können wir gezielter helfen.

795 Beiträge seit 2006
vor 14 Jahren

Hi, syn87.

DoubleBuffered :evil:

Oder gezieltes OwnerDrawing/Invalidating.
Siehe [Tutorial] Gezeichnete Objekte mit der Maus verschieben oder besser hier "Gezieltes OwnerDrawing" - schnelles Zeichnen bewegter Objekte

Gruß, Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 14 Jahren

Hi,

im Moment beschränkt sich das Vergrößern/Verschieben des Controls ausschließlich auf die Berechnung von Location und Size. Alle Elemente innerhalb des COntrols sind per Anchors positioniert, sodass sie z.b. innerhalb des Controls immer rechts/oben/links bleiben. Für das selber zeichnen haette ich im ersten Moment keine wirkliche Idee, zumal fuer mich wie gesagt die Wiederverwendbarkeit im Vordergrund steht.

Gruß

Matthias

S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 14 Jahren

Ich hab das ganze einfach mal angehangen. Momentan beschränkt es sich auf die obere Positionbar und die Linke ResizeBar.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo syn87,

bevor wir uns die Mühe machen, hast du dir den schon die Mühe gemacht, alles aus [FAQ] Flackernde Controls vermeiden / Schnelles, flackerfreies Zeichnen und den verlinkten Threads auszuprobieren?

herbivore

S
syn87 Themenstarter:in
87 Beiträge seit 2008
vor 14 Jahren

Versteh mich jetzt nicht falsch. Ich moechte nicht dass ihr mir gleich die Lösung nennt (auch wenn das antuerlich schoen waere). Es geht mir eher um die Frage des Designs meines UserControls.

2.760 Beiträge seit 2006
vor 14 Jahren

Für das selber zeichnen haette ich im ersten Moment keine wirkliche Idee, zumal fuer mich wie gesagt die Wiederverwendbarkeit im Vordergrund steht.

Ohne mir die Solution angeschaut zu haben sage ich einfach mal das du die Elemente nicht selber zeichnest sonder Controls dafür benutzt.
Wenn das der Fall ist treffe ich mal die pauschale Aussage das WinForms dafür zu langsam ist und du entweder auf WPF ausweichen müsstest oder eben selber Zeichnen.

Eventuell kommt das hier: Ideensuche: grafisches Objekt ziehen, aber nur an bestimmten Positionen einrasten lassen schon recht nahe an dein Vorhaben. Das kann allerdings nur als Basis dienen da z.B. kein Vergrößern/Verkleinern implementiert ist.

5.299 Beiträge seit 2008
vor 14 Jahren

Ich habse mir angeguckt, und ist so, wie du sagst.

Und was beim anneren Thread nicht hinhaute, hier wäres möglich, der Trick mitte API.
Ich hab mal in VB sowas verzapft:

Der frühe Apfel fängt den Wurm.