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ß
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.
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
Ich hab das ganze einfach mal angehangen. Momentan beschränkt es sich auf die obere Positionbar und die Linke ResizeBar.
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
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.
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.
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.