|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Проблема с изображением |
|
|
Проблема с изображением
|
|
Старожил Сообщения: 379 |
Возникла небольшая проблеммка с использованием рисунка
Как то я уже спрашивал на эту тему, и мне подкинули хороший скриптик плавного появления картинки. Я его подкорректировал под мгновенное появление изображения, но не могу найти как сделать так, чтобы изображение появлялось не посреди экрана, а в координате x,y (0;0), и поверх всех окон + к этому, нужно чтобы изображение растягивалось на весь экран в зависимости от расширения Название файла 3.jpg (кстати, может работать даже с .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 ("3.jpg")
SetBitMap ($gui , $image, $opacity)
GUISetState()
For $i = 0 To 255 Step 255
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
|
|
|
------- Отправлено: 14:09, 06-02-2010 |
|
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать Можно так:
#NoTrayIcon
#Include <GDIPlus.au3>
#Include <GUIConstantsEx.au3>
#Include <Icons.au3>
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & '\3.jpg')
$Width = _GDIPlus_ImageGetWidth($hImage)
$Height = _GDIPlus_ImageGetHeight($hImage)
; Увеличиваем/уменьшаем пропорционально
$W = @DesktopWidth
$H = $Height * $W / $Width
If $H < @DesktopHeight Then
$H = @DesktopHeight
$W = $Width * $H / $Height
EndIf
; Растягиваем и обрезаем до размеров экрана картинку
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hFit = _Icons_Bitmap_Resize($hBitmap, $W, $H)
$hCrop = _Icons_Bitmap_Crop($hFit, ($W - @DesktopWidth) / 2, ($H - @DesktopHeight) / 2, @DesktopWidth, @DesktopHeight)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteObject($hFit)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
; $hParent нужен для того, что бы не появлялась иконка в области задач и по Alt-Tab
$hParent = GUICreate('', 0, 0, 0, 0, 0, $WS_EX_TOOLWINDOW)
$hForm = GUICreate('', @DesktopWidth, @DesktopHeight, 0, 0, BitOR($WS_DISABLED, $WS_POPUPWINDOW), BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST), $hParent)
GUISetState()
For $i = 0 To 255 Step 5
_SetBitmap($hForm, $hCrop, $i)
Sleep(5)
Next
Sleep(1000)
GUIDelete()
Func _SetBitmap($hWnd, $hBitmap, $iOpacity)
Local $hDC, $hMemDC, $hSv, $pBlend, $tBlend, $pSize, $tSize, $pSource, $tSource
$hDC = _WinAPI_GetDC($hWnd)
$hMemDC = _WinAPI_CreateCompatibleDC($hDC)
$hSv = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = _WinAPI_GetBitmapDimension($hBitmap)
$pSize = DllStructGetPtr($tSize)
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, 'Alpha', $iOpacity)
DllStructSetData($tBlend, 'Format', 1)
_WinAPI_UpdateLayeredWindow($hWnd, $hDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC($hWnd, $hDC)
_WinAPI_SelectObject($hMemDC, $hSv)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>_SetBitmap
|
|
Отправлено: 15:05, 06-02-2010 | #2 |
|
Пользователь Сообщения: 60
|
Профиль | Отправить PM | Цитировать Это наверно из-за того, что окно имеет нулевой размер...
вот так уже прикасается к верхнему левому краю: только там еще белая рамка рисуется - ее наверно как-то через BitNOT можно убрать, не знаю - Creator может с этим поможет... ЗЫ: а зачем ты так по "немецки" opasity "подкорректировал"? ставь $opacity = 255 и сделай цикл с выходом через нажатие "{ESC}" |
|
Отправлено: 15:23, 06-02-2010 | #3 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Разное - HYUNDAI H-LCD3200. проблема с изображением | alibaster | Прочее железо | 1 | 10-03-2009 12:33 | |
| Toshiba USB Hybrid TV Tuner, проблема с изображением | sudden | Непонятные проблемы с Железом | 3 | 15-10-2008 01:46 | |
| проблема с регистрационным изображением | Fess21 | Хочу все знать | 5 | 01-10-2008 20:27 | |
| [решено] Проблема с изображением на мониторе | alk3 | Непонятные проблемы с Железом | 13 | 16-07-2008 00:28 | |
| Проблема с изображением | krest | Видео и аудио: обработка и кодирование | 5 | 06-07-2007 12:42 | |
|