StartDrawing(ImageOutput()) soll ja laut Doku den DC zurückliefern, was es wohl auch richtig macht, denn das blaue Quadrat erscheint mit FillRect_ korrekt im Image.
DrawText_ macht aber keinerlei Anstalten, den Text wie gewünscht innerhalb des RECTs vertikal und horizontal zu zentrieren, sondern setzt ihn bei 0, 0 ab und clippt ihn auch noch.
Was muss ich machen, damit DrawText_ in einem Image richtig funktioniert?
Code: Alles auswählen
Procedure WindowCallback(WindowID, Message, lParam, wParam)
If Message = #WM_PAINT
StartDrawing(WindowOutput())
DrawImage(UseImage(0), 40, 10)
StopDrawing()
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 100, 100, 500, 300, #PB_Window_SystemMenu, "PureBasic - Image")
Gosub CreateImage
SetWindowCallback(@WindowCallback())
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
EndIf
End
CreateImage:
If CreateImage(0, 255, 255)
imageDC=StartDrawing(ImageOutput())
trec.RECT
trec\left=5: trec\top=5: trec\right=100: trec\bottom=100
hBrush = CreateSolidBrush_($ff0000)
FillRect_(imageDC, trec, hBrush)
DrawText_(imageDC,"TEXT",Len("TEXT"),trec,#DT_CENTER|#DT_VCENTER|#DT_SINGLELINE)
StopDrawing()
EndIf
Return