在特定区域中查找表单内子表单的坐标

时间:2013-08-21 19:54:44

标签: vb.net coordinates point axacropdf

我在VB中使用Adobe Reader控件AxAcroPdf在表单中显示pdf文件。在这种形式中,可以选择弹出一个显示条形码的子表单。用户应该能够在PDF上将子表单拖动到所需位置,并且在按Enter键时,条形码将标记在子表单所在的位置。

所以我得到了压印和条形码设计,但我似乎无法确定这件事应该去的确切位置。我已经尝试了很多这方面的变化,我似乎无法工作。

'coordinates of barcodeform relative to the pdf control
Dim pt3 As Point = rdrAdobePdf.PointToClient(barCodeForm.Location)

'This comes close but is always 10-50 pixels off
Dim clientBarCode As Point = New Point(0.5 * (PointToClient(barCodeForm.Location).X - 5), (CInt(pdfReader.GetPageSize(1).Height) - PointToClient(barCodeForm.Location).Y - 80))

'Dim clientBCTry1 As Point = Point.op_Subtraction(PointToClient(screenBarCode), topLeftCorner)
'Dim clientBCtry2 As Point = rdrAdobePdf.PointToClient(screenBarCode)

我理解PointToClient和PointToScreen的基础知识,我也理解(X,Y)坐标的概念。经过几天尝试后,一切都无济于事。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

这几乎看起来像是一个硬编码的解决方案,但这段代码有点帮助。如果标记在PDF页面的顶部,它确实可以准确定位条形码。但是,如果标记在底部,它会变得越来越不准确......即使页面的尺寸没有变化。如果有人有任何其他解决方案随时发布它们。

Dim x As Integer = CInt(0.5 * (PointToClient(screenBarCode).X))
Dim y As Integer = (CInt(pdfReader.GetPageSize(1).Height) - PointToClient(screenBarCode).Y)

If x < 0 Then x = 0
If y < 0 Then y = 0

Dim clientBarCode As Point = New Point(x, y)