Занимался дизайном своей странички, мне понадобились картинки - украшенный текст.Ни одной подходящей проги я не нашел. Оказывается, у purebasic есть функции подсчета высоты и ширины текста - так можно определить размер изображения. А еще неплохо бы сделать прозрачный фон, думаю, как это сделать
If OpenWindow(0, 0, 0, 640, 480, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 640, 480)
m$="Dzhigurda"
If LoadFont(0,"Delta Ray",64)
StartDrawing(CanvasOutput(0))
DrawingFont( FontID(0) )
w=TextWidth(m$)
h=TextHeight(m$)
StopDrawing()
hbmp0.l=CreateImage(0,w,h)
StartDrawing(ImageOutput(0))
Box(0,0,w,h,0)
DrawingFont( FontID(0) )
DrawText(0,0,m$,$FFFFFF)
StopDrawing()
hbmp1.l=CreateImage(1,w,h)
hbmp2.l=LoadImage(2,"line.bmp")
hdc.l=CreateCompatibleDC_(0)
hdc2.l=CreateCompatibleDC_(0)
brush.l = CreatePatternBrush_(hbmp2)
SelectObject_(hDC, brush)
SelectObject_(hDC, hbmp1)
PatBlt_(hDC,0,0,w,h+1,#PATCOPY)
DeleteObject_(brush)
SelectObject_(hDC, hbmp0)
SelectObject_(hDC2, hbmp1)
res.l=BitBlt_(hdc,0,0,w,h,hdc2,0,0,#SRCAND)
;Debug GetLastError_()
DeleteDC_(hdc)
DeleteDC_(hdc2)
If StartDrawing(CanvasOutput(0))
DrawImage(ImageID(0),0,0)
StopDrawing()
FreeFont(0)
EndIf
;cleanup shit
FreeImage(1)
FreeImage(2)
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Дополнение. Так ничего не нашлось, с png мало что понятно. Как вариант предложены программы. Залью позже
Дополнение2. Победа! Пошел по неверному пути, прочитал массу текста про GDI+, но в итоге нашел другое решение.
Дополнение3 Программа тут
Комментарии
Отправить комментарий