Рисование текста и сохранение в PNG
Данный пример показывает как создать изображение, нарисовать в нем текст с нужным шрифтом и сохранить в формате PNG с помощью библиотеки GDI+. Можно сохранять и в других форматах, достаточно поменять расширение файла и CLSID:
- BMP {557CF400-1A04-11D3-9A73-0000F81EF32E}
- JPEG {557CF401-1A04-11D3-9A73-0000F81EF32E}
- GIF {557CF402-1A04-11D3-9A73-0000F81EF32E}
- TIFF {557CF405-1A04-11D3-9A73-0000F81EF32E}
- PNG {557CF406-1A04-11D3-9A73-0000F81EF32E}
Платформы: Windows.
Автор: Hard, создано в 2009 году
#INCLUDE Once "WIN/GDIPLUS.BI" Using GDIPLUS Dim ULONG_PTR_01 As ULONG_PTR Dim GDIPLUSSTARTUPINPUT_01 As GDIPLUSSTARTUPINPUT GDIPLUSSTARTUPINPUT_01.GdiplusVersion = 1 If (GDIPLUSSTARTUP(@ULONG_PTR_01, @GDIPLUSSTARTUPINPUT_01, NULL) <> 0) Then Print "FAIL" Endif Dim GPIMAGE_01 As GPIMAGE Ptr If (GDIPCREATEBITMAPFROMSCAN0(100, 100, NULL, PIXELFORMAT32BPPRGB, NULL, @GPIMAGE_01) <> 0) Then Print "FAIL" Endif Dim GPGRAPHICS_01 As GPGRAPHICS Ptr If (GDIPGETIMAGEGRAPHICSCONTEXT(GPIMAGE_01, @GPGRAPHICS_01) <> 0) Then Print "FAIL" Endif If (GDIPSETSMOOTHINGMODE(GPGRAPHICS_01, SMOOTHINGMODEANTIALIAS) <> 0) Then Print "FAIL" Endif Dim GPFONTFAMILY_01 As GPFONTFAMILY Ptr If (GDIPCREATEFONTFAMILYFROMNAME(Wstr("COURIER NEW"), NULL, @GPFONTFAMILY_01) <> 0) Then Print "FAIL" Endif Dim GPFONT_01 As GPFONT Ptr If (GDIPCREATEFONT(GPFONTFAMILY_01, 12, NULL, NULL, @GPFONT_01) <> 0) Then Print "FAIL" Endif Dim GPBRUSH_01 As GPBRUSH Ptr If (GDIPCREATESOLIDFILL(Rgba(255, 255, 255, 255), @GPBRUSH_01) <> 0) Then Print "FAIL" Endif Dim RECTF_01 As RECTF RECTF_01.X = 10 RECTF_01.Y = 10 If (GDIPDRAWSTRING(GPGRAPHICS_01, Wstr("TEST"), Len("TEST"), GPFONT_01, @RECTF_01, NULL, GPBRUSH_01) <> 0) Then Print "FAIL" Endif GDIPDELETEBRUSH GPBRUSH_01 GDIPDELETEFONTFAMILY GPFONTFAMILY_01 GDIPDELETEFONT GPFONT_01 Dim CLSID_01 As CLSID CLSIDFROMSTRING Wstr("{557CF406-1A04-11D3-9A73-0000F81EF32E}"), @CLSID_01 If (GDIPSAVEIMAGETOFILE(GPIMAGE_01, Wstr("1.png"), @CLSID_01 , NULL) <> 0) Then Print "FAIL" Endif GDIPDELETEGRAPHICS GPGRAPHICS_01 GDIPDISPOSEIMAGE GPIMAGE_01 GDIPLUSSHUTDOWN ULONG_PTR_01