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 に画像を描画します。
しかし、私はこの関数で2つの大きなメモリの増加に不満を持っています(私のイメージは大きいです):
Dim backbuffer As System.Drawing.Bitmap = New Bitmap(PW, PH)
そして行で
Dim hdc As IntPtr = g.GetHdc()
だから、私は質問があります:
なぜ 2 行目は私の画像のサイズに相当するサイズのメモリを増やすの
か、なぜ hdc に描画すると、描画されたビットマップを取得するのか (おそらく最初にボクシングがあり、2 番目にそこにあります)は開封済みです) ?
そして、hdc (具体的な描画面用に最適化された画像のコピー) に描画すると、その最適化されたコピーから元の「バックバッファー」ビットマップに描画がどのように戻ったのでしょうか?