Wenn Du ein korrektes Bild mit CaptureGadget bekommst, einfach dieses Bild drucken.Pure_Beginner hat geschrieben:danke für deinen Tipp, hab mir CaptureGadget angeschaut, wie nicht anders zu erwarten bekomm ich es nicht hin mit der Druckerausgabe.
Bin immer noch Anfänger aber das mit Leidenschaft.![]()
Hättest du noch einen Tipp wie ich das ganze zu Papier bekomme ?
Code: Alles auswählen
Procedure CaptureGadget(Gadget)
Protected width, height
Protected hdc, img
width = GadgetWidth(Gadget)
height = GadgetHeight(Gadget)
img = CreateImage(#PB_Any, width, height, 24)
If img
hdc = StartDrawing(ImageOutput(img))
If hdc
;PrintWindow_(GadgetID(Gadget), hdc, #Null)
SendMessage_(GadgetID(Gadget),#WM_PRINT,hDC,#PRF_CHILDREN|#PRF_CLIENT|#PRF_NONCLIENT|#PRF_ERASEBKGND)
StopDrawing()
Else
FreeImage(img)
ProcedureReturn 0
EndIf
EndIf
ProcedureReturn img
EndProcedure
If OpenWindow(0, 0, 0, 800, 600, "ButtonImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0,10,5,100,20,"Print")
ButtonGadget(1,10, 30, 300, 200,"BeispielGadget")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
If EventGadget()=0
img = CaptureGadget(1)
If PrintRequester()
If StartPrinting("PureBasic Test")
If StartDrawing(PrinterOutput())
If img
DrawImage(ImageID(img), 0, 0, PrinterPageWidth()/2, PrinterPageHeight()/4)
EndIf
StopDrawing()
EndIf
StopPrinting()
EndIf
EndIf
FreeImage(img)
EndIf
EndSelect
ForEver
EndIf