Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Flackerndes UserControl
syn87
myCSharp.de - Member



Dabei seit:
Beiträge: 87

Themenstarter:

Flackerndes UserControl

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

zeig mal deine zeichenroutine. dann können wir gezielter helfen.
TheBrainiac
myCSharp.de - Member

Avatar #avatar-3152.png


Dabei seit:
Beiträge: 795
Herkunft: /dev/null

beantworten | zitieren | melden

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"
private Nachricht | Beiträge des Benutzers
syn87
myCSharp.de - Member



Dabei seit:
Beiträge: 87

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
syn87
myCSharp.de - Member



Dabei seit:
Beiträge: 87

Themenstarter:

beantworten | zitieren | melden

Ich hab das ganze einfach mal angehangen. Momentan beschränkt es sich auf die obere Positionbar und die Linke ResizeBar.
Attachments
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
syn87
myCSharp.de - Member



Dabei seit:
Beiträge: 87

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
jaensen
myCSharp.de - Experte

Avatar #avatar-2657.png


Dabei seit:
Beiträge: 2.760
Herkunft: München

beantworten | zitieren | melden

Zitat
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.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5.299

beantworten | zitieren | melden

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:
Attachments
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers