Eli pystyykö Visual Basic:illä tulostamaan formilta tietyn alueen, kuten frame:n sisällön vain?
Pystyy, mutta alue pitää ensin kopioida kuvaan:
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
Private Sub Form_Click()
Me.ScaleMode = 3
Picture1.AutoRedraw = True
' kopioidaan oikea alue kuvaan
BitBlt Picture1.hdc, 0, 0, Frame1.Width, Frame1.Height, Me.hdc, Frame1.Left, Frame1.Top, SRCCOPY
Picture1.Picture = Picture1.Image
' lähetetään kuva tulostimelle
Printer.PaintPicture Picture1, 0, 0
Printer.EndDoc
End SubTässä Frame1 on tulostettava kehys ja Picture1 on väliaikainen kuva.
Mittayksiköksi valitaan pikseli (ScaleMode 3), jotta koordinaatit kelpaavat suoraan BitBlt-funktiolle.
Kiitos Antti tuo toimii todella hyvin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.