如何知道100像素的线段实际打印出来是多宽

yifawu100 2019-01-19 10:53:04
如题所示,屏幕像素数为单位的图像,实际打印时的大小,这是如何计算的
...全文
423 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yifawu100 2019-01-25
  • 打赏
  • 举报
回复
是的, PrintPage 事件中看到的,

300 像素的点, 600DPI,HP打印机 打印质量 FastRes 600,

怎么知道实际打印的宽度呢?
xuzuning 2019-01-25
  • 打赏
  • 举报
回复
你是在 PrintPage 事件中看到的吗? dpi 是 像素/英寸,按比例计算 像素/英寸 * 长度(英寸) 就是需要的像素个数 应该是这样的,改天弄台打印机实测一下
yifawu100 2019-01-25
  • 打赏
  • 举报
回复
回楼上, Graphics.DpiX=600,
这个值要怎样计算呢?
xuzuning 2019-01-25
  • 打赏
  • 举报
回复
你至少要看一下 Graphics.DpiX 的值是多少吧?
yifawu100 2019-01-25
  • 打赏
  • 举报
回复
那么,换一个203dpi的打印机,打印出的长度会长些吗?
yifawu100 2019-01-25
  • 打赏
  • 举报
回复
1inch =2.54cm=25.4mm
yifawu100 2019-01-25
  • 打赏
  • 举报
回复
我实测了下,我画300个像素的线,按理说用300DPI的打印分辨率,应是1英寸长,但是实际打印是76MM长度,长了很多
yifawu100 2019-01-25
  • 打赏
  • 举报
回复
按照版主的说法,很有道理,我画的300像素的线段,打印长度=300x2.54/100=76.2mm
xuzuning 2019-01-25
  • 打赏
  • 举报
回复
查了资料,并实测了一下 windows 对于激光打印机(DPI=600),每个像素是 英寸/100
        static void prn_PrintPage(object sender, PrintPageEventArgs e)
        {
            
            var g = e.Graphics;
            var k = 100 / 25.4f;
            g.DrawString((sender as PrintDocument).PrinterSettings.PrinterName, font, Brushes.Black, new Point(20, 20));
            g.DrawString(string.Format("X={0}", g.DpiX), font, Brushes.Black, new Point(20, 40));
            g.DrawString(string.Format("Y={0}", g.DpiY), font, Brushes.Black, new Point(20, 60));
            g.DrawLine(Pens.Black, 20, 80, 20 + 200, 80);
            g.DrawLine(Pens.Black, 20, 90, 20 + 60 * k, 90);
            g.DrawLine(Pens.Black, 20, 92, 20 + 100 * k, 92);
Hello World, 2019-01-25
  • 打赏
  • 举报
回复
图片大小用像素来表示,还有一个属性是分辨率(DPI),就是每英寸分布的点(像素)数量,打印出来的大小就是像素除以分辨率,看看下面这个Photoshop的截图就明白了:

像素为720*720,分辨率为72,打印尺寸为1英寸(2.54厘米)


像素还是720*720,分辨率为300,打印尺寸为2.4英寸(6.1厘米)
assky124 2019-01-25
  • 打赏
  • 举报
回复
Window默认的是96,打印机一般是300。 PrintDocument是抽象对象,PrintPage事件可以获取到实际的物理大小 我打的断点 PageBounds = {X = 0 Y = 0 Width = 827 Height = 1169} e.Graphics.DpiX = 600
ttsffgg 2019-01-20
  • 打赏
  • 举报
回复
要算dpi,也就是每英寸点数 看打印机的dpi设置 比如当打印机dpi为300时,每英寸可以打印300个点,那么100像素打印出来就是三分之一英寸 当然上面是不进行任何缩放处理的情况. 我们在上网随便下载一张普通的jpg图片,如果它是100*100像素的话,按照默认设置打印出来宽度一般不会是1/3英寸,而是约1英寸多,这是因为图片本身也有dpi值,通常这个值是96, 也就是每英寸96个点,所以100点自然就是约1英寸多. 打印软件为我们做了换算.换算过程大概是这样的, 1获得图片dip,这里是96 2得到打印设备的dpi值,这里取300 3将图片按照上述两个dpi的比例进行放大,也就是100/96*300 最后得到一个312*312大小的图片,并交给打印机 打印机按照300dpi来打印312*312大小的图片,最后尺寸也是约1英寸多点. 结论,通过dpi的比例来计算最终大小
xuzuning 2019-01-20
  • 打赏
  • 举报
回复
Graphics 是抽象设备,隔离了具体的物理设备(也就是与实际的打印机无关) 你可通过 Graphics 的 DpiX、DpiY 属性来换算出你需要尺寸
yifawu100 2019-01-20
  • 打赏
  • 举报
回复
画线函数 g.drawLine(pen,x1,y1, x1+100,y1)
yifawu100 2019-01-20
  • 打赏
  • 举报
回复
多谢回复,我用的是hp激光打印机,用c#自带的打印预览控件,打印时没有缩放,我实际打印试一下
xuzuning 2019-01-20
  • 打赏
  • 举报
回复
由 dpi 决定
平底锅锅锅 2019-01-20
  • 打赏
  • 举报
回复
用画图打开。算出两点最大像素,配合尺寸,比例得出大小。如果有电机,也可以通过位置算出。或者通过专用的测量软件。
北交《计算机图形学》在线作业二 一、单选题(共 20 道试题,共 50 分。) 1. 透视投影中主灭点最多可以有( )个 A. 1 B. 2 C. 3 D. 4 正确答案: 2. 在下列有关曲线和曲面概念的叙述语句中,错误的论述为( ) A. 实体模型和曲面造型是CAD系统中常用的主要造型方法,曲面造型是用参数曲面描述来表 示一个复杂的物体 B. 在曲线和曲面定义时,使用的基函数应有两个重要性质:凸包性和仿射不变性 C. 从描述复杂性和形状灵活性考虑,最常用的参数曲面是3次有理多项式的曲面 D. 参数形式和隐含形式都是精确的解析表示法,在计算机图形学中,它们一样好用 正确答案: 3. 下列设备中哪一种是图形输出设备( ) A. 绘图仪 B. 数字化仪 C. 扫描仪 D. 键盘 正确答案: 4. 在中点画圆算法中,那些说法是错误的( ) A. 为了减轻画圆的工作量,中点画圆利用了圆的四对称性性质 B. 中点画圆算法是一个增量算法 C. 中点画圆算法只用到整数的加减法和左移运算,故效率高且适合硬件实现 D. 中点还原算法与中点画线算法类似,用一个函数值来选择两个像素点中最逼近圆弧的像 素点 正确答案: 5. 关于计算机图形标准化的论述,哪个是错误的( ) A. CGM和CGI是面向图形设备的接口标准 B. GKS、IGES、STEP均是ISO标准 C. IGES和STEP是数据模型和文件格式的标准 D. PHIGS具有模块化的功能结构 正确答案: 6. 分辨率为1080×1024的显示器各需要多少字节位平面数为24的帧缓存( ) A. 512KB B. 1.6MB C. 2.7MB D. 3.9MB 正确答案: 7. Sutherland- Hodgeman多边形裁剪(逐边裁剪)算法中,对于多边形的某条边(方向为从端点S到端点 P )与裁剪窗口的某条边的比较结果共有以下四种情况,分别需输出一些点,请问哪种情况 下输出的点是错误的( ) A. S在裁剪边外侧而P在裁剪边内侧,则输出该边与裁剪边的交点I和P点 B. S与P均在裁剪边内侧,则输出P点 C. S在裁剪边内侧而P在裁剪边外侧,则输出该边与裁剪边的S点和交点I D. S与P均在裁剪边外侧,则不输出点 正确答案: 8. 在光亮度插值算法中,下列论述哪个是错误的( ) A. Gouraud明暗模型计算中,多边形与扫描平面相交区段上每一采样点的光亮度值是由扫描 平面与多边形边界交点的光亮度插值得到的 B. Phong明暗处理模型中,采用了双线性插值和构造法向量函数的方法模拟高光 C. Gouraud明暗模型和Phong明暗处理模型主要是为了处理由多个平面片近似表示曲面物体 的绘制问题 D. Phong明暗模型处理的物体表面光亮度呈现不连续跃变 正确答案: 9. 编辑3D文字时,怎样得到能够在三维空间内旋转3D文字的角度控制框( ) A. 利用"选择"工具单击3D文字 B. 利用"交互立体"工具单击3D文字 C. 利用"交互立体"工具双击3D文字 D. 利用"交互立体"工具先选中3D文字,然后再单击 正确答案: 10. 如果要将辅助线按15度固定角度旋转,需要按住下列哪一个键( ) A. ALT B. CTRL C. SHIFT D. ESC 正确答案: 11. 用编码裁剪算法裁剪二维线段时,若直线段两端点M、N的编码分别为1000和1010,则对 该线段采用的处理方法是( ) A. 直接保留 B. 直接放弃 C. 对MN在求交分割 D. 不能判断 正确答案: 12. 在多边形的逐边裁剪算法中,对于某条多边形的边(方向为从端点S到端点P)与某条裁 剪线(窗口的某一边)的比较结果共有以下4种情况,分别须输出一些顶点。请问哪种情 况下输出的顶点是错误的( ) A. S和P均在可见的一侧,则输出S和P B. S和P均在不可见的一侧,则输出0个顶点 C. S在可见一侧,P在不可见一侧,则输出线段SP与裁剪线的交点 D. S在不可见一侧,P在可见一侧,则输出线段SP与裁剪线的交点和P 正确答案: 13. 要为两个选定的对象复制已有的 Blend 效果,但需要确保"主对象"做更改时不会影响到此复制对象,应执行什么命令( ) A. "Effects-Copy Effect-Blend From" B. "Effects-Clone Effect-Blend From" C. "Edit-Duplicate" D. "Edit-Copy" 正确答案: 14. 以下关于图形变换的论述那些是错误的( ) A. 错切变换虽然可引起图形角度的改变,但不会发生图形畸变 B. 平移变换不改变图形大小和形状,只改变图形位置 C. 拓扑关系不变的几何变换不改变图形的连接关系和平行关系 D. 旋转变换后各图形部分间的

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧