Что нового

Прозрачное окно с PNG картинкой и надписями

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Здравствуйте, обитатели форума :smile:

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

Пока-что у меня получилось только отобразить изображение с помощью этого, но как прикрепить к ней надписи - не знаю.

Вот скрипт, на всякий случай:
Код:
#Include <GDIPlus.au3>
#Include <Pop-ups.au3>

Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)

_GDIPlus_Startup()

Global  $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\Что имеется.png')
Global $hPopup = _Popup_Register()
_Popup_Show($hPopup, _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage), 1, @DesktopWidth - 300, @DesktopHeight - 200, -1)


While 1
	Sleep(1000)
WEnd

_GDIPlus_Shutdown()




Func _GDIPlus_GraphicsSetTextRenderingHint($hGraphics, $iTextRenderingHint)

	Local $aResult = DllCall($ghGDIPDll, 'uint', 'GdipSetTextRenderingHint', 'ptr', $hGraphics, 'int', $iTextRenderingHint)

	If @error Then
		Return SetError(1, 0, 0)
	Else
		If $aResult[0] Then
			Return SetError($aResult[0], 0, 0)
		EndIf
	EndIf
	Return 1
EndFunc   ;==>_GDIPlus_GraphicsSetTextRenderingHint


Архив (на случай, если не прикрепятся файлы)
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Astel064
Вообще давно еще Yashed выкладывал пример...

А так, если задать такой стиль окну, т.е чтоб он рисовался как картинка учитывая прозрачности, ТО элементы типо GUICtrlCreate... к нему нельзя прикрепить...
Но тут есть способ, сделать что-то вроде самопального движка кнопок и вырисовывать их в картинке, а картинку в окно...
В принципе так-же и с текстом... У меня на таком принципе работает GAPanel.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Astel064,
То, что Вы хотите сделать можно, но я предлагаю Вам все это упростить. Дайте отдельные картинки(иконки) фон, термометр, капля, спидометр и пример текстов, которые нужно будет показывать.
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
OffTopic:
Astel064
У меня не доступны картинки...
madmasles
Кст. почему? У меня вообще когбуд-то профиль глюкнул (
аватарки не меняются, профиле ничего изменить нельзя...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
OffTopic:
Ganibal95 [?]
Кст. почему? У меня вообще когбуд-то профиль глюкнул (
аватарки не меняются, профиле ничего изменить нельзя...
Не ко мне вопрос. Сам страдаю...
 
Автор
Astel064

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Спасибо, уважаемые гуру за ответы, но я вроде сам справился :smile:
Пытался это разработать 9-ю способами, и смог только с помощью последнего реализовать свою задачу, его как-раз выкладываю:
Ссылка (Яндекс.Диск), Зеркало (F-Bit)

В общем, у меня получилось прозрачное окно на AutoIt, с изображением PNG, причем, PNG не имеет цвета по углам. В окне имеются 4-ре элемента LAbel. В общем, скрипт вышел такой:
Код:
#include <Constants.au3>
#include <GDIPlus.au3>
#include <WinAPI.au3>
#Include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

Global Const $STM_SETIMAGE = 0x172


;$hGUI = GUICreate("Test")
$hGUI = GUICreate("PET", 133, 133, -1, -1, $WS_POPUP, BitOr($WS_EX_LAYERED,$WS_EX_TOOLWINDOW, $GUI_WS_EX_PARENTDRAG))
$Pic = GUICtrlCreatePic("", 0, 0, 133, 133, -1, $GUI_WS_EX_PARENTDRAG)
_SetPNGIntoPicControl($Pic, @ScriptDir & "\Colors\Blue3.png")

$hLab_1 = GUICtrlCreateLabel ( "Text 1", 55, 20, 50, 20 )
$hLab_2 = GUICtrlCreateLabel ( "Text 2", 55, 53, 50, 20 )
$hLab_3 = GUICtrlCreateLabel ( "Text 3", 55, 86, 50, 20 )
$hLab_4 = GUICtrlCreateLabel ( "15.59 - 19/01/2014", 15, 110, 100, 20 )

GUICtrlSetFont ($hLab_1, 10, 600, 0,"Tahoma")
GUICtrlSetColor ( $hLab_1, 0xE1E100 )
GUICtrlSetBkColor ($hLab_1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont ($hLab_2, 10, 600, 0,"Tahoma")
GUICtrlSetColor ( $hLab_2, 0xE1E100 )
GUICtrlSetBkColor ($hLab_2,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont ($hLab_3, 10, 600, 0,"Tahoma")
GUICtrlSetColor ( $hLab_3, 0xE1E100 )
GUICtrlSetBkColor ($hLab_3,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetFont ($hLab_4, 7, 600, 0,"Tahoma")
GUICtrlSetColor ( $hLab_4, 0xFFFFFF )
GUICtrlSetBkColor ($hLab_4,$GUI_BKCOLOR_TRANSPARENT)


GUISetState()
GUISetBkColor ( 0x000000 )

While True
    $msg = GUIGetMsg()
    Switch $msg
        Case -3
            Exit
    EndSwitch
WEnd

Func _SetPNGIntoPicControl($iPic, $sPNGFile)
    _GDIPlus_Startup()
    Local $hImage = _GDIPlus_ImageLoadFromFile($sPNGFile)
    Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    _WinAPI_DeleteObject(GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap))
    _WinAPI_DeleteObject($hBitmap)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
EndFunc


Всем спасибо за попытки помочь мне :smile:


Добавлено:
Сообщение автоматически объединено:

А на форуме есть еще пользователи из Саратова? Просто, когда я окончательно закончу программу (WebSar) - могу им скинуть.
WebSar умеет показывать реальную погоду Саратова (только этого города), но основное предназначение WebSar - это просмотр (запись, просмотр записей) изображений с веб-камер Саратова, которые разбросаны по городу :smile:
 
Верх