|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отображение картинки без каких либо дополнит окон, кнопок, бордюров... |
|
[решено] Отображение картинки без каких либо дополнит окон, кнопок, бордюров...
|
Старожил Сообщения: 379 |
Профиль | Отправить PM | Цитировать Нашел в стандартных примерах нечто похожее(показывает пример использования "ползунка" в аутоите)
Вот путь к примеру: C:\Program Files\AutoIt3\Examples\GUI\Advanced\AlphaBlend.au3 Помогите, пожалуйста. |
|
Отправлено: 13:31, 02-05-2009 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать еще пример на gui с картинкой:
#include <GUIConstants.au3> #include <WindowsConstants.au3> $Main_Gui = GUICreate("Transparent Pic Demo", 345, 0, -1, -1, $WS_POPUP) $Pic_Gui = GUICreate("", 345, 232, 10, 75, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Main_Gui) GUICtrlCreatePic(@SystemDir & "\oobe\images\monitor.gif", 0, 0, 0, 0, -1, $GUI_WS_EX_PARENTDRAG) GUICtrlSetState(-1, $GUI_DISABLE) GUICtrlCreateInput('test', 50, 75, 50, 20) GUISetState(@SW_SHOW, $Pic_Gui) GUISetState(@SW_SHOW, $Main_Gui) While GUIGetMsg() <> $GUI_EVENT_CLOSE WEnd Цитата:
тут же бы открывалось окно программы, а не происходило ожидание завершения анимации ..) |
|
------- Отправлено: 04:34, 16-07-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 36
|
Профиль | Отправить PM | Цитировать ;~ #include <GUIConstants.au3> ;~ ------------------------------------------------------- ; Description : ; Written by : Alex Pougach ; Date : 22/12/2008 ; ; With help of Igal Bravshtein and Creat0R ; -------------------------------------------------------- #include-once ; Transp_PNG( $temp , x , y),$temp = "E:\VBA\AutoIt\GUI\2.png" ; $temp- Doroga k file ; x - прозрачность ; y- плавность перхода #NoTrayIcon #include <GDIPlus.au3> #include <GuiComboBox.au3> #include <WindowsConstants.au3> #include <GuiConstantsEx.au3> #include <ButtonConstants.au3> #include <WinAPI.au3> Global Const $WM_LBUTTONDOWN = 0x0201 Global Const $WM_LBUTTONUP = 0x0202 Global Const $ULW_ALPHA = 2 Global Const $AC_SRC_ALPHA = 1 Global $launchDir = @DesktopDir, $GUI Global $iExitLoop = False Func Transp_PNG($temp, $iOpacity = 255, $EnableFade = True) If $iOpacity < 0 Then $iOpacity = 0 If $iOpacity > 255 Then $iOpacity = 255 ; Load PNG file as GDI bitmap _GDIPlus_Startup() $pngSrc = $temp $hImage = _GDIPlus_ImageLoadFromFile($pngSrc) ; Extract image width and height from PNG $width = _GDIPlus_ImageGetWidth($hImage) $height = _GDIPlus_ImageGetHeight($hImage) ; Create layered window $GUI = GUICreate("", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED) WinSetOnTop($GUI, "", 1) GUIRegisterMsg($WM_LBUTTONDOWN, "WM_LBUTTONDOWN") GUIRegisterMsg($WM_LBUTTONUP, "WM_LBUTTONUP") GUIRegisterMsg($WM_WINDOWPOSCHANGED, "WM_WINDOWPOSCHANGED") GUISetState() If $EnableFade Then ;fade in png background For $i = 0 To $iOpacity Step 1 SetBitmap($GUI, $hImage, $i) Next Else SetBitmap($GUI, $hImage, $iOpacity) EndIf ; set default button for Enter key activation - renders outside GUI window $BtnExit = GUICtrlCreateButton("Exit", $width, $height, 10, 10, $BS_DEFPUSHBUTTON) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $BtnExit ExitLoop EndSwitch If $iExitLoop Then ExitLoop WEnd If $EnableFade Then ;fade out png background For $i = $iOpacity To 0 Step -1 SetBitmap($GUI, $hImage, $i) Next Else SetBitmap($GUI, $hImage, 0) EndIf EndFunc ;==>Transp_PNG ; Handle the WM_LBUTTONDOWN for the layered window so it can be dragged by clicking anywhere on the image. Func WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam) If BitAND(WinGetState($hWnd), 32) Then Return $GUI_RUNDEFMSG DllCall("user32.dll", "long", "SendMessage", "hwnd", $hWnd, "int", $WM_SYSCOMMAND, "int", 0xF009, "int", 0) EndFunc ;==>WM_LBUTTONDOWN Func WM_LBUTTONUP($hWnd, $iMsg, $wParam, $lParam) $iExitLoop = True EndFunc ;==>WM_LBUTTONUP Func WM_WINDOWPOSCHANGED($hWnd, $iMsg, $wParam, $lParam) $iExitLoop = False EndFunc ;==>WM_WINDOWPOSCHANGED ; SetBitMap Func SetBitmap($hGUI, $hImage, $iOpacity) Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend $hScrDC = _WinAPI_GetDC(0) $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap) $tSize = DllStructCreate($tagSIZE) $pSize = DllStructGetPtr($tSize) DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage)) DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage)) $tSource = DllStructCreate($tagPOINT) $pSource = DllStructGetPtr($tSource) $tBlend = DllStructCreate($tagBLENDFUNCTION) $pBlend = DllStructGetPtr($tBlend) DllStructSetData($tBlend, "Alpha", $iOpacity) DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA) _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA) _WinAPI_ReleaseDC(0, $hScrDC) _WinAPI_SelectObject($hMemDC, $hOld) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteDC($hMemDC) EndFunc ;==>SetBitmap |
Отправлено: 17:30, 16-07-2009 | #12 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Очень хороший пример плавного появления картинки . Да простит меня автор я подправил только значение Step в функции
Для более плавного появления картинки. Интересно что пример работает с проблемным форматом - png - Вопрос к знатокам а можно ли этот пример как то упростить? например вместо - png - поставить - gif - или какими-другими способами , или нельзя? #NoTrayIcon #include <GDIPlus.au3> #include <GuiComboBox.au3> #include <File.au3> #include <Misc.au3> #include <Array.au3> #include <WindowsConstants.au3> #include <GuiConstantsEx.au3> #include <ButtonConstants.au3> #include <WinAPI.au3> Global Const $AC_SRC_ALPHA = 1;, $ULW_ALPHA = 2 Global $launchDir = @DesktopDir, $GUI Global $hUser32DllOpen = DllOpen("User32.dll") $temp = "2.png" Transp_PNG($temp) Func Transp_PNG($temp, $iOpacity = 255, $EnableFade = True) If $iOpacity < 0 Then $iOpacity = 0 If $iOpacity > 255 Then $iOpacity = 255 ; Load PNG file as GDI bitmap _GDIPlus_Startup() $pngSrc = $temp $hImage = _GDIPlus_ImageLoadFromFile($pngSrc) ; Extract image width and height from PNG $width = _GDIPlus_ImageGetWidth($hImage) $height = _GDIPlus_ImageGetHeight($hImage) ; Create layered window $GUI = GUICreate("lod3n launcher", $width, $height, -1, -1, $WS_POPUP, $WS_EX_LAYERED) GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST") GUISetState() WinSetOnTop($GUI, "", 1) If $EnableFade Then ;fade in png background For $i = 0 To $iOpacity Step 0.1 SetBitmap($GUI, $hImage, $i) Next Else SetBitmap($GUI, $hImage, $iOpacity) EndIf ; set default button for Enter key activation - renders outside GUI window $BtnExit = GUICtrlCreateButton("Exit", $width, $height, 10, 10, $BS_DEFPUSHBUTTON) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $BtnExit ExitLoop EndSwitch If _IsPressed(01, $hUser32DllOpen) Then ExitLoop WEnd If $EnableFade Then ;fade out png background For $i = $iOpacity To 0 Step -0.1 SetBitmap($GUI, $hImage, $i) Next Else SetBitmap($GUI, $hImage, 0) EndIf CancelPressed() EndFunc ;==>Transp_PNG Func CancelPressed() DllClose($hUser32DllOpen) Exit EndFunc ; Handle the WM_NCHITTEST for the layered window so it can be dragged by clicking anywhere on the image. Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam) Switch $iMsg Case $WM_NCHITTEST If $hWnd = $GUI Then Return $HTCAPTION EndSwitch EndFunc ;==>WM_NCHITTEST ; SetBitMap Func SetBitmap($hGUI, $hImage, $iOpacity) Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend $hScrDC = _WinAPI_GetDC(0) $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap) $tSize = DllStructCreate($tagSIZE) $pSize = DllStructGetPtr($tSize) DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage)) DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage)) $tSource = DllStructCreate($tagPOINT) $pSource = DllStructGetPtr($tSource) $tBlend = DllStructCreate($tagBLENDFUNCTION) $pBlend = DllStructGetPtr($tBlend) DllStructSetData($tBlend, "Alpha", $iOpacity) DllStructSetData($tBlend, "Format", $AC_SRC_ALPHA) _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA) _WinAPI_ReleaseDC(0, $hScrDC) _WinAPI_SelectObject($hMemDC, $hOld) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteDC($hMemDC) EndFunc ;==>SetBitmap |
Последний раз редактировалось assch, 23-04-2012 в 01:40. Отправлено: 23:01, 17-07-2009 | #13 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Вот ещё один немного упрощённый пример картинки без видимости самого окна.
Не подскажете, а как сделать определённую прозрачность самой картинки не окна а именно картинки. Выше было написано что с помощью функции SetBitMap , а кроме этого больше ни как? Не функцию динамического появления , а просто чтобы картинка стояла с определённой прозрачностью. И не знает ли кто почему картинка с форматом - png - в этом примере работать не хотит. |
Последний раз редактировалось assch, 23-04-2012 в 01:40. Отправлено: 02:50, 18-07-2009 | #14 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата assch:
|
|
------- Отправлено: 04:11, 18-07-2009 | #15 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Подредактировал код от beve кажется получилось плавное появление картинки.
файл - 2.png - находится чуть по выше. #include <WindowsConstants.au3> #include <GuiConstantsEx.au3> #include <GDIPlus.au3> Global $opacity = 0 $gui = GUICreate("Transparent", 0, 0, -1, -1, $WS_POPUP , $WS_EX_LAYERED) _GDIPlus_Startup () $image = _GDIPlus_ImageLoadFromFile ("2.png") SetBitMap ($gui , $image, $opacity) GUISetState() For $i = 0 To 255 Step 5 SetBitmap ($gui, $image, $i) Sleep (30) Next Func SetBitmap($gui, $image, $opacity) $hScrDC = _WinAPI_GetDC (0) $hMemDC = _WinAPI_CreateCompatibleDC ($hScrDC) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap ($image) $hOld = _WinAPI_SelectObject ($hMemDC, $hBitmap) $tSize = DllStructCreate ($tagSIZE) $pSize = DllStructGetPtr ($tSize ) DllStructSetData ($tSize, "X", _GDIPlus_ImageGetWidth ($image)) DllStructSetData ($tSize, "Y", _GDIPlus_ImageGetHeight ($image)) $tSource = DllStructCreate ($tagPOINT) $pSource = DllStructGetPtr ($tSource) $tBlend = DllStructCreate ($tagBLENDFUNCTION) $pBlend = DllStructGetPtr ($tBlend) DllStructSetData ($tBlend, "Alpha" , $opacity) DllStructSetData ($tBlend, "Format", 1) _WinAPI_UpdateLayeredWindow ($gui, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA) _WinAPI_ReleaseDC (0, $hScrDC) _WinAPI_SelectObject ($hMemDC, $hOld) _WinAPI_DeleteObject ($hBitmap) _WinAPI_DeleteDC ($hMemDC) EndFunc While GUIGetMsg () <> $GUI_EVENT_CLOSE WEnd |
Последний раз редактировалось assch, 18-07-2009 в 18:41. Отправлено: 07:11, 18-07-2009 | #16 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать assch, не забывай обрамлять код в твоих постах тегами [code][/codе].
|
------- Отправлено: 11:31, 18-07-2009 | #17 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Большое спасибо за подсказки. Я просто ещё не разобрался как это делается. Попробую исправить.
Не подскажете а как сделать чтобы код был цветным? |
Последний раз редактировалось assch, 18-07-2009 в 18:46. Отправлено: 15:18, 18-07-2009 | #18 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 16:42, 18-07-2009 | #19 |
Пользователь Сообщения: 55
|
Профиль | Отправить PM | Цитировать а как сделать что бы картинка появлялась в центре экрана, а задний фон становился полупрозрачным?
|
Отправлено: 16:11, 04-08-2009 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Отображение окон программ в усеченном виде | baltiec | Microsoft Windows 2000/XP | 9 | 23-07-2016 18:18 | |
Драйвер - Некорректное отображение текстур, окон | steips | Microsoft Windows Vista | 0 | 12-01-2010 15:14 | |
какой BIOS лучше на мамку ASUS P5B-VM 1004 либо 0901 либо 0504 либо 0405 либо 0307 | paljch | Материнские платы и память | 1 | 12-11-2009 23:27 | |
При переустановке XP комп влюбое время стал вырубаться, без каких либой сообщений | collman | Непонятные проблемы с Железом | 11 | 07-10-2009 09:58 | |
Комп сам уходит в перезагрузку без каких либо объективных причин | MXMX | Непонятные проблемы с Железом | 45 | 07-06-2008 14:18 |
|