开发者

.NET printing coordinate conversion

I can't get a simple answer to this. I have pixel coordinates, I want to print an image in a (landscape) page at those coords.

In my printing event I do:

Dim mypoint As New PointF(1, 1192)
e.Graphics.DrawImage(My.Resources.littleSquare, mypoint)

This obviously doesn't work: I specify pixel开发者_高级运维s but the driver expects inches(?) or what?

Tried to: e.Graphics.PageUnit = GraphicsUnit.Inch with no luck.

I'd like a conversion method like:

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

Any hints? Thanks.


I think I got it.

My pixel coordinates are not fixed, but relative to a 300dpi canvas, thus I have to do a double DPI conversion, like this:

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜