Автор Тема: [Окна, Диалоги] Как свернуть в трей, чтобы изображение загруженное через GDIPlus не пропадало?  (Прочитано 1365 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн reset86 [?]

  • Новичок
  • *
  • Сообщений: 47
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Как свернуть приложение в трей, развернуть и чтобы изображение загруженное через GDIPlus.au3 не пропадало?

Код: AutoIt [Выделить]
; Это пример кода.

#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>

$hForm = GUICreate('', 164, 164, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
GUICtrlSetState(-1, $GUI_DISABLE)
WinSetTrans($hForm, '', 160)
GUISetBkColor(0x111111)

$Label35 = GUICtrlCreateLabel("__", 134, 94, 15, 15)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetCursor (-1, 0)

$Label36 = GUICtrlCreateLabel("X", 134, 137, 15, 15)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetCursor (-1, 0)

GUISetState(@SW_SHOW)

_GDIPlus_StartUp()
$hImage   = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\img.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hForm)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()

While 1
$nMsg = GUIGetMsg()
Switch $nMsg

Case $Label35

Case $Label36
Exit

EndSwitch
WEnd


Русское сообщество AutoIt


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 4102
  • Репутация: 1089
    • Награды
  • Версия AutoIt: 3.3.14.0
См. пример в оригинальной справке к версии 3.3.14.+ по функции
Код: AutoIt [Выделить]
_GDIPlus_BitmapCreateDIBFromBitmap()


Оффлайн reset86 [?]

  • Новичок
  • *
  • Сообщений: 47

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Как, в моем случае мне применить _GDIPlus_BitmapCreateDIBFromBitmap()?
В справке посмотрел пример, он не подходит под данный код, что я привел в примере.

Русское сообщество AutoIt


Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 4102
  • Репутация: 1089
    • Награды
  • Версия AutoIt: 3.3.14.0
reset86
Цитировать
он не подходит под данный код
Да ладно. Чё, совсем не подходит? Прям никак?

А так пробовали?
(нажмите для показа/скрытия)

Оффлайн reset86 [?]

  • Новичок
  • *
  • Сообщений: 47

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо InnI, за помощь, была проблема с глюками изображения, проблему с глюками решил, вот конечный результат без глюков (может кому пригодится).

Код: AutoIt [Выделить]
#NoTrayIcon
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <StaticConstants.au3>

$hForm = GUICreate('', 164, 164, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
_GUICtrlPic_Create("img.png", 0, 0, 164, 164)
GUICtrlSetState(-1, $GUI_DISABLE)
WinSetTrans($hForm, '', 160)
GUISetBkColor(0x111111)

$Label35 = GUICtrlCreateLabel("__", 134, 94, 15, 15, $SS_SIMPLE)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetCursor (-1, 0)

$Label36 = GUICtrlCreateLabel("X", 134, 137, 15, 15, $SS_SIMPLE)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetCursor (-1, 0)

GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Label35
Case $Label36
Exit
EndSwitch
WEnd

Func _GUICtrlPic_Create($sFilename, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $iStyle = -1, $iExStyle = -1)
_GDIPlus_Startup()
Local $idPic = GUICtrlCreatePic("", $iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle)
Local $hBitmap = _GDIPlus_BitmapCreateFromFile($sFilename)
If $iWidth = -1 Then $iWidth = _GDIPlus_ImageGetWidth($hBitmap)
If $iHeight = -1 Then $iHeight = _GDIPlus_ImageGetHeight($hBitmap)
Local $hBitmap_Resized = _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight)
Local $hBMP_Ctxt = _GDIPlus_ImageGetGraphicsContext($hBitmap_Resized)
_GDIPlus_GraphicsSetInterpolationMode($hBMP_Ctxt, $GDIP_INTERPOLATIONMODE_HIGHQUALITYBICUBIC)
_GDIPlus_GraphicsDrawImageRect($hBMP_Ctxt, $hBitmap, 0, 0, $iWidth, $iHeight)
Local $hHBitmap = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap_Resized)
Local $hPrevImage = GUICtrlSendMsg($idPic, 0x0172, 0, $hHBitmap)
_WinAPI_DeleteObject($hPrevImage)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_BitmapDispose($hBitmap_Resized)
_GDIPlus_GraphicsDispose($hBMP_Ctxt)
_WinAPI_DeleteObject($hHBitmap)
_GDIPlus_Shutdown()
Return $idPic
EndFunc

« Последнее редактирование: Февраль 09, 2017, 19:01:39 от reset86, Причина: Убрал лишнее »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
12604 Просмотров
Последний ответ Апрель 14, 2019, 10:05:34
от SharkyEXE
5 Ответов
10172 Просмотров
Последний ответ Март 31, 2010, 14:34:57
от Kaster
5 Ответов
4819 Просмотров
Последний ответ Февраль 20, 2011, 02:47:29
от Yashied
7 Ответов
4070 Просмотров
Последний ответ Сентябрь 16, 2011, 09:13:44
от RUVATA
5 Ответов
2627 Просмотров
Последний ответ Сентябрь 15, 2011, 01:29:25
от agikon
6 Ответов
4576 Просмотров
Последний ответ Ноябрь 08, 2011, 11:22:17
от gregaz
8 Ответов
2051 Просмотров
Последний ответ Июль 30, 2015, 17:45:25
от Yashied
9 Ответов
1558 Просмотров
Последний ответ Январь 22, 2017, 15:54:51
от inververs
2 Ответов
1494 Просмотров
Последний ответ Февраль 03, 2017, 10:09:35
от Vovsla
0 Ответов
435 Просмотров
Последний ответ Декабрь 21, 2017, 04:37:05
от lixar21