CapFrameX - Capture und Analyse Tool

@Taxxor So, müssten eigentlich alle deine gefundenen Bugs behoben sein.

  • Average befindet sich nicht mehr in der Liste der auswählbaren Secondary Metrics.
  • None kann verwendet werden ohne Exception, auch zurück nach nicht None geht nun.
  • Der Fehler bei der Berechnung der x% Average Low Parameter ist behoben. Ich habe die Berechnung der Leistungsparameter noch weiter zentralisiert. Dabei ist mir ein Fehler unterlaufen. 1000/result fehlte noch, also die Transformation auf FPS.
  • Die Legende ist über dem Bar Chart positioniert.
  • Die Titel in der Legende werden nun korrekt aktualisiert.
 
Zuletzt bearbeitet von einem Moderator:
Yep sind behoben, beim Frametime Tab ist mir gerade aufgefallen, dass die farbenzuordnung irdendwie nicht funktioniert, wenn ich Farben ändere, passiert nichts. Erst wenn ich danach einen der Records entferne, ändern sich die Farben der verbleibenden so wie ich sie eingestellt habe. Und wenn ich alle entferne bleibt der zuletzt entfernte als Graph drin.
 
Ok, der Frametime Tab wäre die nächste Baustelle. Wie nutzen wir den Platz, um die Graphen optimal zeichnen zu können?
 
Die Balkendiagramme sind damit vorerst soweit releasefertig.

Im Frametimetab fehlen nun noch die L-Shapes und evtl schon die minimalisierten Farbauswahl Buttons einhergehend mit der Verringerung der Breite der Liste.
Und dass das Highlighting den Graphen nicht einfach nur dicker macht sondern auch wirklich in den Vordergrund holt.
 
Taxxor schrieb:
Und dass das Highlighting den Graphen nicht einfach nur dicker macht sondern auch wirklich in den Vordergrund holt.

Oh ja, das fehlt noch. Dann mache ich das als nächstes. Auch bei den Bar Charts. Erstmal den Bar Chart Tab abschließen.
 
ZeroStrat schrieb:
Wie nutzen wir den Platz, um die Graphen optimal zeichnen zu können?
Da du die Toolbar ja nun nach unten gelegt hast, geht uns da natürlich etwas Platz verloren, ansonsten wie mein erstes Bild vom Konzept "damals"

1..png


Da wir ja den Kontext dann auch rechts in der Liste haben und dort auch die Farbe zu sehen ist, braucht es die Legende innerhalb des Frametime Graphen doch eigentlich nicht mehr(Die Liste muss dafür dann auch mit in den Screenshot Ausschnitt), dann kann man den Bereich der Gaphen auch ein Stück nach oben ziehen, den gesamten Frame um dieses Maß niedriger halten und somit unten den Platz für die Toolbar schaffen.
Man könnte auch die Standardhöhe von CX um ein paar Pixel vergrößern wie du es schon mit der Breite gemacht hast oder die L-Shapes etwas niedriger halten. Oder eine Kombination aus allen 3 Sachen, dann fällts am wenigsten auf dass irgendwas kleiner geworden ist^^
Die Toolbar selbst kann auch noch etwas schmaler werden, unten kann man noch etwas an Freifläche abschneiden.
Ergänzung ()

ZeroStrat schrieb:
Oh ja, das fehlt noch. Dann mache ich das als nächstes. Auch bei den Bar Charts. Erstmal den Bar Chart Tab abschließen.
Ergänzung dazu, der Bereich für das Mouseover in der Liste sollte mMn fließend sein, aktuell sind zwischen den Records ein paar Pixel (um die Trennlinien herum) bei denen gar nichts hervorgehoben wird, ist ein ziemliches geflacker wenn man mit der Maus über die Records fährt^^
Text von Record 1 - Record 1
Bereich zwischen Text von Record 1 und Trennlinie - nichts
Trennlinie - Record 1
Bereich zwischen Trennlinie und Text von Record 2 - nichts
Text von Record 2 - Record 2
 
Zuletzt bearbeitet:
Taxxor schrieb:
Ergänzung dazu, der Bereich für das Mouseover in der Liste sollte mMn fließend sein, aktuell sind zwischen den Records ein paar Pixel (um die Trennlinien herum) bei denen gar nichts hervorgehoben wird, ist ein ziemliches geflacker wenn man mit der Maus über die Records fährt^^

Ich glaube, so ein Verhalten wird nicht mit zusätzlichen Bereichen gemacht, sondern mit Timern.
 
Den Mouseover Bereich in dem etwas passiert legst du aber doch fest oder nicht? Der Bereich müsste halt jeweils von Linie zu Linie gehen.
 
Ja klar. Teste mal das Chart bei PCGH. Gehst du mit der Mause drüber, reagiert es schneller als bei MouseLeave.
 
Der Bereich zwischen Text und Trennlinie reagiert bei dir aber überhaupt nicht, egal ob ich hingehe oder weggehe und wie schnell ich das tue. Der Punkt ab dem umgeschaltet wird ist exakt da wo der Text beginnt bzw endet und dann nochmal exakt auf der Trennlinie.

Es geht ja darum, dass es in der Liste überhaupt keinen Bereich geben sollte, wo nichts hervorgehoben wird(außer natürlich dort wo keine Einträge stehen) und das Highlighting somit smooth von einem zum nächsten Graph wechseln kann.
 
Zuletzt bearbeitet:
Ach, du meinst was ganz anderes... :D
Ergänzung ()

Das Bar Chart Highlighting ist am Start. Die Lücken sind irgendwie gar nicht so groß?!
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: Taxxor
ZeroStrat schrieb:
Die Lücken sind irgendwie gar nicht so groß?!
Die mouseover Lücken in der Liste? Deshalb nerven sie ja noch mehr weil es bei der Bewegung von einem zum nächsten Record ganz schnell zwischen highlighted und nicht highlighted wechselt^^ Es sei denn man bewegt die Maus sehr schnell, dann passiert das nicht.
 
@ZeroStrat Ja ist es, aber den Mouseover Bereich vergrößern ging nicht? Jetzt hast du ja nur den Text nach unten geschoben
 
Ich habe schon ein wenig mehr gemacht und wundere mich über das Verhalten. Aber das ist WPF. Man programmiert etwas und klammert sich dann an das Hoffnungsprinzip. :D
 
Mich wundert es nur, dass die Trennlinie selbst das Mouseover triggert, aber der Bereich darüber und darunter nicht. Man könnte auch die Trennlinie vom Mouseover ausnehmen, dann hätte man zumindest zwischen den Records nicht nochmal einen kleinem Bereich in dem ein Highlighting aufploppt.

Ich hab mir das ganze tatsächlich so einfach vorgestellt, dass diese Record Einträge in der Liste alle einzelne Frames sind, über die man dann mit einem Rahmen einen Mouseover Bereich legen kann, in dem es triggert.
 
Der "Fehler" ist scheinbar bekannt. Im Internet streiten sich die Leute darüber, ob's ein Fehler oder ein "spezielles Feature" ist. :freak: Jedenfalls lässt sich das mit Style.Trigger umgehen, aber leider habe ich noch keine Möglichkeit gefunden, das Binding zum Viewmodel zum Leben zu erwecken. Falls jemand ne Lösung dafür hat, bitte melden.

@SV3N Hattest du das mit dem Umstyling des Logos mitbekommen? Ich hake nochmal dezent nach... :D
 
Ich habe gestern noch Attached Properties versucht. Brachte nichts. Heute teste ich noch Dependency Properties und wenn das nichts bringt, gebe ich auf. 1 Woche für so eine Kleinigkeit ist dann mehr als genug.
 
Zuletzt bearbeitet von einem Moderator:
Ich hab's jetzt doch mit einem Attached Property + Border.Style hinbekommen.

XML:
<Border.Style>
    <Style TargetType="Border">
        <Style.Triggers>
            <Trigger Property="Border.IsMouseOver" Value="True">
                <Setter Property="attached:MouseHelper.IsMouseOver" Value="True"/>
                <Setter Property="Border.Background" Value="#cfcfcf" />
            </Trigger>
            <Trigger Property="Border.IsMouseOver" Value="False">
                <Setter Property="attached:MouseHelper.IsMouseOver" Value="False"/>
                <Setter Property="Border.Background" Value="Transparent" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Border.Style>

C#:
public class MouseHelper : DependencyObject
{
    public static readonly DependencyProperty IsMouseOverProperty = DependencyProperty.RegisterAttached(
        "IsMouseOver", typeof(bool), typeof(MouseHelper), new PropertyMetadata(PropertyChangedCallback));

    public static void PropertyChangedCallback(DependencyObject depObj, DependencyPropertyChangedEventArgs args)
    {
        var control = depObj as FrameworkElement;
        var eventHandler = control.DataContext as IMouseEventHandler;

        if ((bool)args.NewValue)
            eventHandler.OnMouseEnter();
        else
            eventHandler.OnMouseLeave();
    }

    public static void SetIsMouseOver(DependencyObject target, Boolean value)
    {
        target.SetValue(IsMouseOverProperty, value);
    }

    public static bool GetIsMouseOver(DependencyObject target)
    {
        return (bool)target.GetValue(IsMouseOverProperty);
    }
}

Ich checke gerade ein, dann kannst du testen.
 
Zurück
Oben