Laden...

Minimap UserControl

Erstellt von gelöschtem Konto vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.065 Views
Gelöschter Account
vor 16 Jahren
Minimap UserControl

Hallo liebe mycsharp Benutzer/innen.

Ich habe soetwas ähnliches wie eine Minimap (wie man sie aus diversen Spielen kennt) angefangen zu entwickeln (für ein privates projekt).

Nun ist die version schon recht Anschaulich jedoch dezent verbuggt. Da mir nicht alle Bugs bekannt sind, möchte ich euch um eure Mithilfe bitten und auch gerne Anregungen entgegennehmen.

Das ganze ist so konzipiert das es ein Usercontrol ist der lediglich direkt aus der Toolbar in ein beliebiges Control (welches als container für andere controls fungieren darf) gezogen werden kann und sofort alle relevanten Funktionalitäten bereitstellt.

Gemeint ist damit:

  1. Darstellen der inhalte des Controls in das es geschoben wurde
  2. Navigation durch die Minimap
  3. Dynamisches Anpassen an Veränderungen innerhalb des (parent) Controls (größe etc.)

toolbox:

Schiebt man diesen in ein z.B. panel dann kann man noch diverse Eigenschaften festlegen:

  1. ClientareaOnMinimap ->hier wird festgelegt wie der momentan sichtbare bereich markiert werden soll
    a: Brightness -> der sichtbare bereich wird mit weiß (alpha 150) gezeichnet
    b: Rectangel -> ein schwarzes rechteck zeichnet den sichtbaren bereich
    c: None -> der sichtbare bereich wird nicht gezeichnet (wenn der panel keinen virtuellen bereich hat)

  2. CollapsedSize -> prinzipiell unterstützd die minimap 2 modi. Zugeklappt und aufgeklappt. wenn man jetzt draufklickt weil man navigieren möchte dann vergrößert sie sich (einfach mal im angehängtem demo ausprobieren)

  3. CornerPosition -> legt das eck fest in dem sich es anheftet (unbound bedeutet es heftet sich nirgends an)

  4. ElementsMode -> die art und weise wie die controls vom Parent angezeigt werden sollen
    a: Image -> von allen controls werden eine art "thumbnailimages" genommen
    b: BackColor -> es wird nur ein rechteck gezeichnet mit der hintergrundfarbe des jeweiligen controls
    c: ColorFromName -> es wird der name des controls genommen und versucht es in eine farbe zu wandeln um damit ein rechteck zu zeichnen
    d: noElements -> es werden keine controls gezeichnet

  5. ExtendetSize -> wenn extensible auf true dann wird beim draufklicken die minimap vergrößert um besser navigieren zu können und diese option legt fest auf wieviel das control vergrößert wird

  6. Extensible -> siehe punkt 5

  7. Mapmode -> dient zur berechnung des virtuellen bereiches
    a: FullDynamic -> wenn ein virtueller bereich existiert dann wird berechnet wo das letzte control sich befindet und so die größe des minimapbereiches festgelegt (das ist noch ziemlich verbuggt)
    b: GrowOnly -> wenn ein virtueller bereich existiert dann wird der minimale virtuelle bereich als ausgangsbasis genommen der jedoch vergrößert werden kann

  8. Margin -> dient zur abstandshaltung von der minimap zu dem rand des jeweiligen parents. (um das problem mit den scrollbalken in den griff zu bekommen)

  9. Size -> sollte zur designzeit immer collapsedSize entsprechen aber zur laufzeit zeigt es immer die derzeitige größe an (also wenn expandiert dann zeigts die größe vom expandiertem an)

bekannte bugs:

  1. Flimmern der Minimap (noch nicht optimierte zeichenroutinen)
  2. Überlagern der Minimap von anderen Controls (da wird mal eine art "top most" kommen)
  3. Wenn FullDynamic bei Mapmode dann spinnt die anzeige
  4. Das "Springen der Mouse" wenn sich die minimap expandiert.
  5. wenn ColorFromName bei ElementsMode und es gibt controls die keinen Farbennamen im namen tragen dann müsste es eine exception geben
  6. wenn man das control im designer löscht gibt es 2 fehlermeldungen die aber weiter nichts machen

dankbar bin ich für:

  1. wünsche/anregungen
  2. bugs die nicht oben benannt sind

Abschließende bemerkung:
dieses control liegt bei der demo in form einer dll bereit. wer es verwenden möchte der soll dies bitte tun (und mir eine pm schreiben damit ich weiß ob es überhaupt jemand nutzt).

probiert die exe bitte aus die im anhang ist

edit: hier noch ein bild der beispielanwendung die im anhang ist: