1

があり、Paper (wx.Panel)その上にミリメートル スケールでグラフを描画したいとします。そのため、のマッピング モードをPaintDcミリメートルに設定しますdc.SetMapMode(wx.MM_METRIC)。次に、横軸を描画します。

class Paper(wx.Panel):
    def onPaint(self, event):
        dc = wx.PaintDC(self)
        dc.SetMapMode(wx.MM_METRIC)
        w, h = self.GetClientSize() <<< This line get size in pixel.
        dc.DrawLine(0, h-10, w-1, h-10)

軸を紙の下部から 10 ミリメートル離したいので、紙のサイズを としてクエリしますw, h = self.GetClientSize()が、問題はサイズがミリメートルではなくピクセルであることです。

パネルのサイズを mm 単位で取得する関数は何ですか、またはサイズをピクセル単位で mm にマップする関数はありますか?

4

2 に答える 2

2

幸いなことに、画面のサイズをピクセル単位と mm 単位で取得する関数があることがわかりました。:wx.GetDisplaySize()wx.GetDisplaySizeMM()を使用して、ピクセルあたりのミリメートルの量を計算しmmperpx、ピクセル単位のサイズをミリメートルに変換するために使用できます。

def px2mm(pixels):
    px = float(wx.GetDisplaySize()[1])
    mm = float(wx.GetDisplaySizeMM()[1])
    mmperpx = mm/px
    return mmperpx * pixels
于 2013-08-02T18:57:16.353 に答える
2

私は python プログラマーではなく、wxWidgets を短時間以上使用したこともないので、私の答えは純粋に、これを行うメソッドがないことを前提としています。

画面の解像度 (通常は 75 dpi) を取得し、その画面で 1 ピクセルが何 mm になるかを計算する必要があります。

画面解像度の詳細http://www.scantips.com/basics1a.html

キャリブレーションや何らかの情報源からのモニター情報を取得せずに、ルールを取得してドローと同じ mm を測定すると仮定しないでください。

于 2013-08-02T17:59:17.337 に答える