Announcement

Collapse
No announcement yet.

cm in pixel umrechnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • cm in pixel umrechnen

    hallo,

    kann man cm in pixel umrechnen?<br>
    ich brauche das für mein recheheft für geometrie!!

    gruß

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Wie groß ein Pixel ist kommt sehr auf das Aufgabegerät an.
    <p>
    Bei einen Bildschirm lässt sich es softwaretechnisch unmöglich herausfinden, wieviele Pixel 1 cm sind, auf einen Drucker hat man gute Chancen. Wofür brauchst du daß genau

    Comment


    • #3
      hi,

      ich programmiere ein rechenheft für einen behinderten jungen.<br>
      wenn die mathelehrerin sagt, er soll ein quadrat zeichen mit 4cm<br>
      so mussen die 4 cm umgerechnet werden für meine zeichenfunktion rectangle vom canvas!

      gruß

      marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        ja, aber soll das Rechenheft auf den Bildschirm erscheinen oder auf dem Drucker?

        * Bildschirm: Benutzer muß aktuelle Bildschirmmaße in cm eingeben.
        * Drucker: Kann Software-mäßig berechnet werden

        Comment


        • #5
          beides!!
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hi

            <pre>

            var
            FactorX: Double = 0;
            FactorY: Double = 0;

            procedure InitFactors;
            var
            DC: hDC;
            begin
            DC := GetDC(0);
            try
            // Logische Pixel per Inch umwandeln in Millimeter per Pixel
            FactorX := GetDeviceCaps(DC, LOGPIXELSX) / 25.4; // 1 Inch = 25.4 mm
            FactorY := GetDeviceCaps(DC, LOGPIXELSY) / 25.4;

            // oder Pixel und Millimeter Auflösung des Bildschirmes nutzen
            FactorX := GetDeviceCaps(DC, HORZRES) / GetDeviceCaps(DC, HORZSIZE);
            FactorY := GetDeviceCaps(DC, VERTRES) / GetDeviceCaps(DC, VERTSIZE);
            finally
            ReleaseDC(0, DC);
            end;
            end;

            function MMtoPixelX(I: Double): Integer;
            begin
            if FactorX = 0 then InitFactors;
            Result := Round(I * FactorX);
            end;

            function MMtoPixelY(I: Double): Integer;
            begin
            if FactorY = 0 then InitFactors;
            Result := Round(I * FactorY);
            end;

            </pre>

            Gruß Hage

            Comment


            • #7
              hallo hagen,

              was hälst du hier von?

              Wert in cm = Wert in Pixel * 2,54 / 96 <br>

              96 = DPI-Zahl vom Bildschirm <br>
              Dots per INCH = Pixel pro INCH <br>
              <br>
              2,54 ist der Faktor für die Umrechnung von INCH und CM. <br>

              gruß

              marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                Das Problem ist<br>
                96 = DPI-Zahl vom Bildschirm<br>
                Das ist die DPI-Zahl die mit "grosse Schriften" / "kleine Schriften" veraendert werden kann.<br>
                Dier Wert muss also nichts mit der Realitaet zu tun haben.<br>
                Das ist wohl einer der schlimmsten Bugs von Windows

                Comment


                • #9
                  Yes, und deshalb benutzt der Code als zweite Alternative eben das Verhältniss von der Milimeter Auflösunf zur Pixelauflösung des Bildschirmes. Ein anderer Grund ist das eben unsere Monitor NICHT Quadratisch sind sondern Rechteckig. Somit ist die Pixel Auflösung der X und Y Achsen verschieden. Ein 100x100 Pixel Quadrat wird eben NICHT als Quadrat dargestellt sondern als Rechteck mit unterschiedlichen kantenlängen.

                  @Markus, Deine Methode ist also ein zu naiver Ansatz, sorry

                  Gruß hage

                  Comment


                  • #10
                    hi hagen,

                    dann erkläre mal deinen code!
                    die prozedur iniitfactors kapiere ich nicht!<br>
                    außerdem will ich doch pixel in mm umrechnen!!

                    gruß

                    marku
                    Herzliche Grüße

                    Markus Lemcke
                    barrierefreies Webdesign

                    Comment


                    • #11
                      Also, die globalen variablen FactorX und FactorY müssen einmal initialisiert werden. Das mach InitFactors. Der Wert in FactorX ist die Anzahl der Pixel pro Millimeter in der X Achse, FactorY Anzahl der Pixel pro Millimeter in der Y Achse. heist also A(Pixel) := B(mm) * FactorX würde B Millimeter in A Pixel umrechnen. Wenn das der fall ist dann muß B(mm) := A(pixel) / FactorX die Umrechnung von Pixel aus Millimeter sein.

                      gruß hage

                      Comment


                      • #12
                        ....obwohl so und so eine nicht maßstabs-getreue Zeichnung auf dem Bildschirm herauskommt. Da z.B. jeder User seine Bildschirmbild direkt in allen Richtungen verzerren kann, bekommt man nie eine (genaue) maßstabsgetreue Zeichnung herbekommen, es sei denn man lässt den Benutzer auf irgendeine Weise die Größe eines Bildpunktes in cm eingeben

                        Comment


                        • #13
                          Die Sache ist rel. simpel. Obiger Code ermittelt ja die Bildschirmgröße in Millimeter. Sollte der Monitor korrekt ausgewählt sein dann stimmen die Maße auch. Ansonsten zeichnet man einfach ein 5x5cm Rechteck und lässt den user mit einem Lineal nachmessen. Das gemessene Ratio zum berechneten ergibt dann das Differenz-Ratio das nun abgespeichert werden kann. Jede Umwandlung nutzt nun dieses Ratio. Damit lassen sich erstaunliche Genauigkeiten erzeugen. In einem kleineren Projekt von mir bin ich genau so vorgegangen, und man konnte tatsächlich die genauen Maße der Geometrischen Figuren 1 zu 1 vom Monitor abnehmen.

                          Gruß hage

                          Comment


                          • #14
                            Hi Hagen,

                            Bei manchen Monitoren braucht man da aber ein ziemlich flexibles Lineal ;-)

                            Gruß
                            Gesin

                            Comment


                            • #15
                              naja, die meisten Plastiklineale haben gut funktioniert. Die Anforderung war eben das viele verschiedene Figuren sehr schnell berechnet wurden. Jedesmal erst einen Ausdruck auf'm Plotter zu machen war zu ineffizient

                              Comment

                              Working...
                              X