日期:2014-05-17  浏览次数:20898 次

关于屏幕画刻度尺 打印的问题 DPI
想画一把刻度尺,并打印出来。

在屏幕上画,拿实际尺子量屏幕,总是小于实际尺子。

以下代码如果单纯拷贝可能不能运行,我会在下面说明以下。

Pen p = new Pen(Color.Black, 0.1f);
            for (int i = 0; i < 420; i++ )
            {
               
                if ((i % 10) == 0)
                {//厘米
                    m_TopStaffGph.DrawLine(p, (float)((float)(i * 96) / (float)25.4 + TopLeftBank.Width), 0, (float)((float)(i * 96) / (float)25.4 + TopLeftBank.Width), lineH / 2);
                    m_TopStaffGph.DrawString((i / 10).ToString(), m_TopStaffFone, Brushes.Black, (float)((float)(i * 96) / (float)25.4 + TopLeftBank.Width - 5), lineH / 2);                  
                }
                else if ((i % 5) == 0)
                {//5毫米
                    m_TopStaffGph.DrawLine(p, (float)((float)(i * 96) / (float)25.4 + TopLeftBank.Width), 0, (float)((float)(i * 96) / (float)25.4 + TopLeftBank.Width), lineH / 3);                  
                }
                else
                {//毫米        
                    m_TopStaffGph.DrawLine(p, (float)((float)(i * 96) / (float)25.4 + TopLeftBank.Width), 0, (float)((float)(i * 96) / (float)25.4 + TopLeftBank.Width), lineH / 4);
                }
            }

这是在TopStaff_Paint事件中的代码。TopStaff是个panel。
m_TopStaffGph是由TopStaff.CreateGraphics建立的。
上面代码中 我单纯的认为96/25.4是屏幕一毫米的刻度。
因为不管是事件中的e还是m_TopStaffGph,它们的dpix都是96。
可是实际画出来以后,当我傻呼呼的拿尺子去量屏幕时,发现总是小于实际。

求指点。
后面还有用打印机打印出纸张,先解决前面的问题。
C# dpi graphics

------解决方案--------------------
好像是的,Window的图形界面好像和硬件设备没有关系。
同样的显示器,设置成1920*1080&n