假设我有一个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的功能。
答案 0 :(得分:2)
我不是python程序员,也没有使用wxWidgets超过一小段时间,所以我的回答纯粹是假设没有方法会为你做这个。
你需要获得屏幕的分辨率(通常为75dpi),然后计算一个像素在该屏幕上相等的毫米数。
屏幕分辨率详情http://www.scantips.com/basics1a.html
不要假设如果没有校准或从某些来源获取显示器信息,您将获得一个规则并测量与绘制相同的mm。
答案 1 :(得分:2)
幸运的是,我发现有一些函数可以获得屏幕尺寸,以像素为单位,以毫米为单位:wx.GetDisplaySize()
和wx.GetDisplaySizeMM()
,我可以用它来计算每像素毫米的数量{{ 1}},反过来可用于将像素大小转换为毫米。
mmperpx