Wieviele KM hat die Maus zurückgelegt?



  • Hi,

    kennt doch sicherlich dieses Funny Programm, das zählt wieviele KM die Maus in Xh zurück gelegt hat 😃

    Wollte ich auch mal coden, doch ich frage mich wie man Pixel in Inches oder Centimeter umrechnen kann? Gibt es da irgendwie Funktionen?

    Vorallem da dies doch auf jedem Monitor anders ist und je nach auflösung, oder? 😕



  • Gibts da nicht was von...Gdi!



  • man kann die größe eines pixel errechnen aber das so viel sinn macht ist ne andere frage. es komm auf die größe des bildschirms und auf die auflössung. ein 15-Zoll-Bildschirm mit einer Auflösung von 1024×768 misst ein Pixel etwa 0,33 mm.



  • pi88el schrieb:

    man kann die größe eines pixel errechnen aber das so viel sinn macht ist ne andere frage. es komm auf die größe des bildschirms und auf die auflössung. ein 15-Zoll-Bildschirm mit einer Auflösung von 1024×768 misst ein Pixel etwa 0,33 mm.

    Wie findet man denn diese daten raus?



  • Ein ganz perverser Gedankengang meinerseits: Gdi+ unterstützt GraphicsUnits.

    /// <summary>Specifies the unit of measure for the given data.</summary>
    /// <filterpriority>2</filterpriority>
    public enum GraphicsUnit
    {
          World,
          Display,
          Pixel,
          Point,
          Inch,
          Document,
          Millimeter
    }
    

    Du erstellst also eine Bitmap und holst dir via

    [DllImport("gdiplus.dll", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
    internal static extern int GdipGetImageBounds(HandleRef image, ref GPRECTF gprectf, out GraphicsUnit unit);
    

    die grösse in Millimeter.



  • GdiFreak schrieb:

    Ein ganz perverser Gedankengang meinerseits: Gdi+ unterstützt GraphicsUnits.

    /// <summary>Specifies the unit of measure for the given data.</summary>
    /// <filterpriority>2</filterpriority>
    public enum GraphicsUnit
    {
          World,
          Display,
          Pixel,
          Point,
          Inch,
          Document,
          Millimeter
    }
    

    Du erstellst also eine Bitmap und holst dir via

    [DllImport("gdiplus.dll", CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
    internal static extern int GdipGetImageBounds(HandleRef image, ref GPRECTF gprectf, out GraphicsUnit unit);
    

    die grösse in Millimeter.

    Danke, aber ich bleib lieber beim guten alten C/C++ mit WinAPI und halte mich von solchen sachen wie C#, .NET und Managed C++ fern.



  • Wie Pi88el schon geschrieben hat, du brauchst die Auflösung (einfach GetSystemMetrics(SM_CXSCREEN bzw. SM_CYSCREEN)) und die Monitor-Größe.
    Das Problem ist dabei die Monitor-Größe, ich weiß nicht, ob du die rauskriegen kannst, weil Windows wahrscheinlich selbst nicht einmal weiß, wie groß dein Monitor ist!


  • Mod

    Die Frage nach der Bildschirmauflösung ist nicht relevant sondern wie hoch die Auflösung der Maus ist. Alte Mäuse lagen bei 100-200dpi. Meine schafft es auf 800dpi!
    Was die maus auf dem Monitor bewegt wurde ist sowieso wieder Software abhängig, den da ist ja auch ein "Beschleuniger" dazwischen.



  • Willst du rausfinden, wie viel KM die Maus an sich oder der MausPFEIL zurücklegt? Bei der Maus selber wird es Problematisch, da du - wie bereits mein Vorposter verläuten lies - die DPI und Beschleunigung miteinberechnen musst.

    Meine Maus schafft es auf 2000DPI, das heißt bei gleichen Settings zu einer sagen wir 200DPI maus, muss ich sie 10 mal so weit bewegen, damit sich der Mauspfeil genausoweit bewegt.



  • Eigentlich nur Mauspfeil. Also Cursor



  • Perner schrieb:

    Meine Maus schafft es auf 2000DPI, das heißt bei gleichen Settings zu einer sagen wir 200DPI maus, muss ich sie 10 mal so weit bewegen, damit sich der Mauspfeil genausoweit bewegt.

    Bist du dir sicher? Wenn ja, dann müsste man ja mit manchen Mäusen stundenlang bis zum Rand scrollen!? Man kanns ja noch über die Windows-Beschleunigung regelen, aber trotzdem...
    ??


Anmelden zum Antworten