Украшение текста

 

Занимался дизайном своей странички, мне понадобились картинки - украшенный текст.Ни одной подходящей проги я не нашел. Оказывается, у 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 Программа тут



Комментарии