Что нового

Преобразование текста в картинку

SlavaS

Знающий
Сообщения
35
Репутация
5
Добрый день.
Подскажите пожалуйста, как сделать текст в виде картинки?
Код:
#include <Word.au3>
$text = "Имеется некий текст ... " & @CRLF _
		 & "Необходимо вставить его в документ в виде картинки"
$oWordApp = _WordCreate(@ScriptDir & "\Test.doc", 0, 1, 0)
$oDoc = _WordDocOpen($oWordApp, @ScriptDir & "\Test.doc")
$oDoc.Range.insertAfter($text)
Sleep(5000)
_WordDocClose($oDoc, 0)
_WordQuit($oWordApp)
 
Автор
S

SlavaS

Знающий
Сообщения
35
Репутация
5
Получилось сделать, но через создание GUI и файла:
Код:
#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <Word.au3>
#include  <ScreenCapture.au3>

Global $file_jpg = @ScriptDir & "\test.jpg"

$text = "Имеется некий текст ... " & @CRLF _
		 & "Необходимо вставить его в документ в виде картинки"

_Text2Image($text)

$oWordApp = _WordCreate(@ScriptDir & "\Test.doc", 0, 1, 0)
$oDoc = _WordDocOpen($oWordApp, @ScriptDir & "\Test.doc")
$oRange = $oDoc.Range.Collapse(0)
$oShape = _WordDocAddPicture($oDoc, $file_jpg, 0, 1, $oRange)
If Not @error Then $oShape.Range.InsertAfter(@CRLF)
FileDelete($file_jpg)
Sleep(5000)
_WordDocClose($oDoc, 0)
_WordQuit($oWordApp)

Func _Text2Image($text)
	Global $hGUI, $hWnd, $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout, $hImage
	$iWidth = 200
	$iHeight = 200
	$hGUI = GUICreate("Preview", $iWidth, $iHeight)
	GUISetBkColor(0xFFFFFF)
	$hWnd = WinGetHandle("Preview")
	GUISetState()
	_GDIPlus_Startup()
	$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
	$Bitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphic)
	$hImage = _GDIPlus_BitmapCreateFromHBITMAP($Bitmap)
	$hBrush = _GDIPlus_BrushCreateSolid()
	$hFormat = _GDIPlus_StringFormatCreate()
	$hFamily = _GDIPlus_FontFamilyCreate("Arial")
	$hFont = _GDIPlus_FontCreate($hFamily, 10, 0)
	$tLayout = _GDIPlus_RectFCreate(5, 5, $iWidth, $iHeight)
	_GDIPlus_GraphicsDrawStringEx($hGraphic, $text, $hFont, $tLayout, $hFormat, $hBrush)
	WinWaitActive($hGUI)
	_ScreenCapture_CaptureWnd($file_jpg, $hGUI, 10, 35, $iWidth, $iHeight, False)
	_GDIPlus_FontDispose($hFont)
	_GDIPlus_FontFamilyDispose($hFamily)
	_GDIPlus_StringFormatDispose($hFormat)
	_GDIPlus_BrushDispose($hBrush)
	_GDIPlus_GraphicsDispose($hGraphic)
	_GDIPlus_Shutdown()
	GUIDelete($hGUI)
EndFunc   ;==>_Text2Image

Может есть идеи как сделать более изящно, без создания файла и GUI?
В идеале Bitmap положить в память и оттуда его вставить в документ.
 
Автор
S

SlavaS

Знающий
Сообщения
35
Репутация
5
Ни кто, ни чем не может помочь? :smile:
 
Верх