Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Resources.au3 - загрузить файл из ресурсов _GDIPlus_ImageLoadFromFile()

Ответить
Настройки темы
Resources.au3 - загрузить файл из ресурсов _GDIPlus_ImageLoadFromFile()

Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Как мне загрузить файл из ресурсов.

Пишу ,что - то вроде этого (перепробовал много вариантов) ничего не получается
Код: Выделить весь код
$Image = _ResourceGet("IMAGE")
$hImage = _GDIPlus_ImageLoadFromFile($Image)

Отправлено: 21:57, 23-04-2010

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3036
Благодарности: 1000

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
Как мне загрузить файл из ресурсов »
Куда потом нужно это применить, вот в чём вопрос. _ResourceGet возвращает указатель на ресурс, а _GDIPlus_ImageLoadFromFile работает с файлом.
Можно конечно сохранить ресурс в файл, используя _ResourceSaveToFile, а можно получить hImage используя _ResourceGetAsImage.

Код: Выделить весь код
$hImage = _ResourceGetAsImage("IMAGE")
И конечно же в таких случаях желательно прикреплять ссылку на такие внешние библиотеки как Resources.au3: http://www.autoitscript.com/forum/in...howtopic=51103

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 00:27, 24-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


_ResourceGetAsImage() я пробовал так .... нет изображения.
Функцией _ResourceSaveToFile() файлы на жеский диск я сохранять не хочу.

А можно рабочий пример ?

Отправлено: 10:40, 24-04-2010 | #3


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3036
Благодарности: 1000

Профиль | Сайт | Отправить PM | Цитировать


Цитата FlatX007:
можно рабочий пример ? »
Э нет, это сначала тебе нужно привести пример где оно не работает, как я уже писал:
Цитата Creat0R:
Куда потом нужно это применить, вот в чём вопрос »

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 15:58, 24-04-2010 | #4


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Arrow.jpg
(7.0 Kb, 13 просмотров)

Код: Выделить весь код
#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


Аватара для Sp01LeR

Пользователь


Сообщения: 60
Благодарности: 13

Профиль | Отправить PM | Цитировать


Мне в принципе наверное понятна основная суть проблемы - я недавно тоже пытался реализовать загрузку изображения из памяти и вывод в окно, чтоб не использовать фун-ю FileInstall() с последующей загрузкой из картинки из файла, но, во первых, у меня с недавних пор очень мало свободн. времени, а во вторых, я не очень дружу с типизированными ЯП(а то бы давно уже кодил на С++).
Поэтому попытка реализации пока безуспешна...

Вот, то что удалось нагуглить по теме(ссылки на исходники С++) -
для загрузки BMP, GIF, JPEG/JPG, ICO, WMF, EMF и др. ресурсов
для загрузки PNG

Вот код скопированный из функции _ScreenCapture_Capture ($h_Src_Img - хендл обьекта для копирования):
Код: Выделить весь код
Local $hWnd = _WinAPI_GetDesktopWindow()
Local $hDDC = _WinAPI_GetDC($hWnd)
Local $hCDC = _WinAPI_CreateCompatibleDC($hDDC)
Local $hBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iW, $iH)
_WinAPI_SelectObject($hCDC, $hBMP)
_WinAPI_BitBlt($hCDC, 0, 0, $iW, $iH, $hDDC, $iLeft, $iTop, $h_Src_Img)
Все остальные функции WinAPI нужно обрабатывать через DllCall - у меня в версии 3.3.2.0 для них еще UDF-обертку не прикрутили.

Отправлено: 23:20, 25-04-2010 | #6


Аватара для tweakos

Старожил


Автор проектов


Сообщения: 374
Благодарности: 128

Профиль | Отправить PM | Цитировать


Ребята вы чо????????Это же элементарно ... даже удф вот эта не нужна
Цитата Creat0R:
Resources.au3: http://www.autoitscript.com/forum/in...howtopic=51103 »
Код: Выделить весь код
#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, Ах да ,конкретно в вашем случае надо вот это
Цитата FlatX007:
$Image = _ResourceGetAsImage("Arrow")
$hImage = _GDIPlus_ImageLoadFromFile($Image) »
заменить на это
Код: Выделить весь код
$lib=_WinAPI_LoadLibrary(@ScriptFullPath)
$bmp=_WinAPI_LoadImage($lib,100,$IMAGE_BITMAP,0,0,"")
$hImage = _GDIPlus_BitmapCreateFromHBITMAP ($bmp)
А чтобы отобразилась картинка вместо GUICtrlCreatePic использовать _GDIPlus_GraphicsDrawImage.
Ну и добавлять картинку в exe в bmp формате.

-------
Аддон [XpAnimateStyle] Анимированные вход/перезагр/выкл в WinXp / New Autorun Construct Alpha
/
LogonUI&Logo Changer / Theme patcher программа изменения элементов тем оформления
/
персонализация (смена обоев через фэйд)


Последний раз редактировалось tweakos, 26-04-2010 в 07:35.

Это сообщение посчитали полезным следующие участники:

Отправлено: 05:52, 26-04-2010 | #7


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Цитата tweakos:
tweakos »
Спасибо конечно ... но мне надо добавить jpg изображения, а в последствии png(что бы поддерживало прозрачность)

Отправлено: 11:42, 26-04-2010 | #8


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 87

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Resources.au3 - загрузить файл из ресурсов _GDIPlus_ImageLoadFromFile()

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ресурсы - Пакеты 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




 
Переход