我无法得到一个简单的答案。 我有像素坐标,我想在那些坐标的(风景)页面上打印图像。
在我的印刷活动中,我做了:
Dim mypoint As New PointF(1, 1192)
e.Graphics.DrawImage(My.Resources.littleSquare, mypoint)
这显然不起作用:我指定像素,但驱动程序需要英寸(?)或什么?
试图:e.Graphics.PageUnit = GraphicsUnit.Inch
没有运气。
我想要一种转换方法,如:
Dim mypoint As New PointF(convertPixelsIntoInches(1), convertPixelsIntoInches(1192))
e.Graphics.DrawImage(My.Resources.littleSquare, mypoint)
Private Function convertPixelsIntoInches(ByVal pixels As Integer) As Single
Return ??
End Function
任何提示?感谢。
答案 0 :(得分:1)
我想我明白了。
我的像素坐标不固定,但相对于300dpi画布,因此我必须进行双DPI转换,如下所示:
e.Graphics.PageUnit = GraphicsUnit.Pixel
dpiX = e.Graphics.DpiX
dpiY = e.Graphics.DpiY
Dim mypoint As New PointF(convertPixelsIntoInchesX(1501), convertPixelsIntoInchesY(1192))
e.Graphics.DrawImage(My.Resources.myblacksquare, mypoint)
Private Function convertPixelsIntoInchesX(ByVal pixel As Integer) As Single
Return CSng(pixel * dpiX / 300)
End Function
Private Function convertPixelsIntoInchesY(ByVal pixel As Integer) As Single
Return CSng(pixel * dpiY / 300)
End Function