moeb1us
2007-03-16, 18:58:06
habe folgendes problem:
es geht um das verständnis des zusammenhangs bitmap-pixel, size desselbigen und maus-koordinaten. genauer: farberkennung des pixels unter der maus.
zu testzwecken eine simple windows-applikation, standard form von mir aus 500x500 format. ein paar textboxes, unten eine picturebox.
Hab in PS eine bmp erstellt mit 1pixel breiten roten linien auf weissem grund, die bilden ein kreuz, vertikale bei x=58px die horizontale bei y=72px.
über
g.DrawImage(testBitmap, 0,0);
füge ich die bmp in den paint-event der picturebox ein und lese paar parameter aus wie Height/Width, PixelFormat, HorizontalResolution, VerticalResolution usw
im Mousemove-Event der Box schreib ich mit
e.X.ToString()
(entsprechend Y) die aktuellen Koordinaten der Maus in zwei weitere Textboxen. (Die Koordinaten beziehen sich dann auf die Box) Außerdem weise ich mit GetPixel die Mauskoordinatenfarbe als BackColor einer kleinen Textbox zu.
Die Auflösung in PS betrug 72dpi (iirc bedeutet das, 1inch hat 72 horizontale und 72 vertikale pixel). Bei unveränderter Auflösung ist nach Starten der Form auf einem TFT direkt zu erkennen, dass das Bild geblurred ist, und zwar geweitet. Die Mauskoordinaten passen nicht zu den Pixeln, leicht zu verifizieren an den bekannten Positionen der roten Linien.
Erst nach Rumspielen per
.SetResolution()
bekomme ich raus, dass bei einer Auflösung von 96x96 dpi eine Übereinstimmung herrscht, die Koordinaten passen und das Bild wird klar.
Nun meine Frage, ist der Wert immer so, hätte ich das wissen müssen, wenn ja woher und warum ist das so :)
Ist der Wert auf jeder Maschine mit jedem Monitor in jeder Auflösung anders, bzw. was ist die Mechanik dahinter?
Danke im Voraus.
mfg, moe
es geht um das verständnis des zusammenhangs bitmap-pixel, size desselbigen und maus-koordinaten. genauer: farberkennung des pixels unter der maus.
zu testzwecken eine simple windows-applikation, standard form von mir aus 500x500 format. ein paar textboxes, unten eine picturebox.
Hab in PS eine bmp erstellt mit 1pixel breiten roten linien auf weissem grund, die bilden ein kreuz, vertikale bei x=58px die horizontale bei y=72px.
über
g.DrawImage(testBitmap, 0,0);
füge ich die bmp in den paint-event der picturebox ein und lese paar parameter aus wie Height/Width, PixelFormat, HorizontalResolution, VerticalResolution usw
im Mousemove-Event der Box schreib ich mit
e.X.ToString()
(entsprechend Y) die aktuellen Koordinaten der Maus in zwei weitere Textboxen. (Die Koordinaten beziehen sich dann auf die Box) Außerdem weise ich mit GetPixel die Mauskoordinatenfarbe als BackColor einer kleinen Textbox zu.
Die Auflösung in PS betrug 72dpi (iirc bedeutet das, 1inch hat 72 horizontale und 72 vertikale pixel). Bei unveränderter Auflösung ist nach Starten der Form auf einem TFT direkt zu erkennen, dass das Bild geblurred ist, und zwar geweitet. Die Mauskoordinaten passen nicht zu den Pixeln, leicht zu verifizieren an den bekannten Positionen der roten Linien.
Erst nach Rumspielen per
.SetResolution()
bekomme ich raus, dass bei einer Auflösung von 96x96 dpi eine Übereinstimmung herrscht, die Koordinaten passen und das Bild wird klar.
Nun meine Frage, ist der Wert immer so, hätte ich das wissen müssen, wenn ja woher und warum ist das so :)
Ist der Wert auf jeder Maschine mit jedem Monitor in jeder Auflösung anders, bzw. was ist die Mechanik dahinter?
Danke im Voraus.
mfg, moe