Public Shared Function Render(ByRef pdfDoc As PDFLibNet.PDFWrapper) As System.Drawing.Bitmap
Try
If pdfDoc IsNot Nothing Then
Dim PW As Integer = pdfDoc.PageWidth
Dim PH As Integer = pdfDoc.PageHeight
Dim backbuffer As System.Drawing.Bitmap = New Bitmap(PW, PH)
pdfDoc.ClientBounds = New Rectangle(0, 0, pdfDoc.PageWidth, pdfDoc.PageHeight)
Dim g As Graphics = Graphics.FromImage(backbuffer)
Using g
Dim hdc As IntPtr = g.GetHdc()
pdfDoc.DrawPageHDC(hdc)
g.ReleaseHdc()
End Using
g.Dispose()
Return backbuffer
End If
Catch ex As Exception
Throw ex
Return Nothing
End Try
Return Nothing
End Function
此函数将图像绘制到从函数返回的位图类型变量“backbuffer”的 hdc 中。但是我对这个函数中内存的两次大增加(我的图像很大)不满意:
在行
Dim backbuffer As System.Drawing.Bitmap = New Bitmap(PW, PH)
并在线
Dim hdc As IntPtr = g.GetHdc()
所以,我有一个问题:
为什么第二行会增加与我的图像等效大小的内存,
为什么如果我绘制到 hdc 中,我会得到绘制的位图,然后返回(可能首先是装箱,然后是正在拆箱)?
如果我绘制到 hdc(针对具体绘图表面的图像的优化副本),我的绘图如何从该优化副本恢复到原始的“后缓冲”位图?