|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Resources.au3 - загрузить файл из ресурсов _GDIPlus_ImageLoadFromFile() |
|
Resources.au3 - загрузить файл из ресурсов _GDIPlus_ImageLoadFromFile()
|
Ветеран Сообщения: 553 |
Профиль | Отправить PM | Цитировать |
|
Отправлено: 21:57, 23-04-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
Можно конечно сохранить ресурс в файл, используя _ResourceSaveToFile, а можно получить hImage используя _ResourceGetAsImage. И конечно же в таких случаях желательно прикреплять ссылку на такие внешние библиотеки как Resources.au3: http://www.autoitscript.com/forum/in...howtopic=51103 |
|
------- Отправлено: 00:27, 24-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать _ResourceGetAsImage() я пробовал так .... нет изображения.
Функцией _ResourceSaveToFile() файлы на жеский диск я сохранять не хочу. А можно рабочий пример ? |
Отправлено: 10:40, 24-04-2010 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 15:58, 24-04-2010 | #4 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Run_AU3Check=n #AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, Arrow.jpg, rcdata, Arrow, 0 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <GDIPlus.au3> #include <Resources.au3> _GDIPlus_Startup () $Image = _ResourceGetAsImage("Arrow") $hImage = _GDIPlus_ImageLoadFromFile($Image) $sCLSID = _GDIPlus_EncodersGetCLSID ("JPG") $tData = DllStructCreate("int Data") DllStructSetData($tData, "Data", $GDIP_EVTTRANSFORMROTATE90) $tParams = _GDIPlus_ParamInit(1) _GDIPlus_ParamAdd ($tParams, $GDIP_EPGTRANSFORMATION, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Data")) _GDIPlus_ImageSaveToFileEx ($hImage, @ScriptDir & "\arrow1.jpg", $sCLSID, DllStructGetPtr($tParams)) $Form1 = GUICreate("", 236, 133) $Pic1 = GUICtrlCreatePic($hImage, 16, 16, 100, 100) ; Тут должно быть изображение из ресурсов. $Pic2 = GUICtrlCreatePic(@ScriptDir & "\arrow1.jpg", 120, 16, 100, 100) ;~ $Pic3 = GUICtrlCreatePic("", 16, 16, 100, 100) ;~ _ResourceSetImageToCtrl($Pic3, "Arrow") GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case -3 _GDIPlus_ShutDown () Exit EndSwitch WEnd |
|
Отправлено: 16:54, 24-04-2010 | #5 |
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать Мне в принципе наверное понятна основная суть проблемы - я недавно тоже пытался реализовать загрузку изображения из памяти и вывод в окно, чтоб не использовать фун-ю FileInstall() с последующей загрузкой из картинки из файла, но, во первых, у меня с недавних пор очень мало свободн. времени, а во вторых, я не очень дружу с типизированными ЯП(а то бы давно уже кодил на С++).
Поэтому попытка реализации пока безуспешна... Вот, то что удалось нагуглить по теме(ссылки на исходники С++) - для загрузки BMP, GIF, JPEG/JPG, ICO, WMF, EMF и др. ресурсов для загрузки PNG Вот код скопированный из функции _ScreenCapture_Capture ($h_Src_Img - хендл обьекта для копирования): Все остальные функции WinAPI нужно обрабатывать через DllCall - у меня в версии 3.3.2.0 для них еще UDF-обертку не прикрутили. |
Отправлено: 23:20, 25-04-2010 | #6 |
Старожил Сообщения: 374
|
Профиль | Отправить PM | Цитировать Ребята вы чо????????Это же элементарно ... даже удф вот эта не нужна
Цитата Creat0R:
#include <winapi.au3> #include <Constants.au3 > #include <gdiplus.au3> $lib=_WinAPI_LoadLibrary(@systemdir&"\logonui.exe") $bmp=_WinAPI_LoadImage($lib,100,$IMAGE_BITMAP,0,0,"") $gui=GUICreate("",@DesktopWidth,@DesktopHeight) GUISetState() _GDIPlus_Startup() $hImage = _GDIPlus_BitmapCreateFromHBITMAP ($bmp) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($gui) _GDIPlus_GraphicsDrawImage($hGraphic,$hImage,0,0) Sleep(5000) _WinAPI_FreeLibrary($lib) Цитата FlatX007:
$lib=_WinAPI_LoadLibrary(@ScriptFullPath) $bmp=_WinAPI_LoadImage($lib,100,$IMAGE_BITMAP,0,0,"") $hImage = _GDIPlus_BitmapCreateFromHBITMAP ($bmp) Ну и добавлять картинку в exe в bmp формате. |
||
------- Последний раз редактировалось tweakos, 26-04-2010 в 07:35. Отправлено: 05:52, 26-04-2010 | #7 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Цитата tweakos:
|
|
Отправлено: 11:42, 26-04-2010 | #8 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать FlatX007, посмотри внимательно на следующий код:
#Region #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Run_Au3check=n #AutoIt3Wrapper_Run_After=ResHacker\ResHacker.exe -add %out%, %out%, Arrow.jpg, rcdata, "Arrow", 0 #EndRegion #Include <GDIPlus.au3> #Include <Resources.au3> _GDIPlus_Startup() $hImage = _ResourceGetAsImage("Arrow") $hBitmap1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) _GDIPlus_ImageRotateFlip($hImage, 1) $hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) _GDIPlus_ImageDispose($hImage) $Form1 = GUICreate("", 236, 133) $Pic1 = GUICtrlCreatePic("", 16, 16, 100, 100) GUICtrlSendMsg(-1, 0x0172, 0, $hBitmap1) $Pic2 = GUICtrlCreatePic("", 120, 16, 100, 100) GUICtrlSendMsg(-1, 0x0172, 0, $hBitmap2) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case -3 _GDIPlus_Shutdown() Exit EndSwitch WEnd ; #FUNCTION# ==================================================================================================================== ; Name...........: _GDIPlus_ImageRotateFlip ; Description ...: Rotates and flips an image ; Syntax.........: _GDIPlus_ImageRotateFlip($hImage, $iRotateFlipType) ; Parameters ....: $hImage - Pointer to an Image object ; $iRotateFlipType - Type of rotation and flip: ; |0 - No rotation and no flipping (A 180-degree rotation, a horizontal flip and then a vertical flip) ; |1 - A 90-degree rotation without flipping (A 270-degree rotation, a horizontal flip and then a vertical flip) ; |2 - A 180-degree rotation without flipping (No rotation, a horizontal flip folow by a vertical flip) ; |3 - A 270-degree rotation without flipping (A 90-degree rotation, a horizontal flip and then a vertical flip) ; |4 - No rotation and a horizontal flip (A 180-degree rotation followed by a vertical flip) ; |5 - A 90-degree rotation followed by a horizontal flip (A 270-degree rotation followed by a vertical flip) ; |6 - A 180-degree rotation followed by a horizontal flip (No rotation and a vertical flip) ; |7 - A 270-degree rotation followed by a horizontal flip (A 90-degree rotation followed by a vertical flip) ; Return values .: Success - True ; Failure - False and either: ; |@error and @extended are set if DllCall failed ; Remarks .......: None ; Related .......: None ; Link ..........; @@MsdnLink@@ GdipImageRotateFlip ; Example .......; No ; =============================================================================================================================== Func _GDIPlus_ImageRotateFlip($hImage, $iRotateFlipType) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipImageRotateFlip", "hwnd", $hImage, "int", $iRotateFlipType) If @error Then Return SetError(@error, @extended, False) Return $aResult[0] = 0 EndFunc ;==>_GDIPlus_ImageRotateFlip |
Последний раз редактировалось Yashied, 26-04-2010 в 15:48. Отправлено: 14:33, 26-04-2010 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ресурсы - Пакеты Resources для GUI-интегратора от BOA-Soft | greg_b | Оформление Windows XP | 102 | 17-01-2014 14:32 | |
Библиотека HTTP.au3 | pop22 | AutoIt | 0 | 26-10-2009 04:32 | |
Интерфейс - [решено] C:\Windows\Resources\Themes на VISTA SP2 | Плохой Бил | Microsoft Windows Vista | 3 | 21-09-2009 17:58 | |
WPI + SFX архивы + *.au3 | Black_Spider | Автоматическая установка приложений | 17 | 09-04-2009 01:44 |
|