|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Повернуть изображение на 90 градусов в GUI окне. |
|
[решено] Повернуть изображение на 90 градусов в GUI окне.
|
Ветеран Сообщения: 553 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 16:39, 14-04-2010 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать FlatX007,
А не проще сделать 2 или сразу 4 картинки заранее? |
Отправлено: 17:11, 14-04-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Было бы проще я бы так и сделал
|
Отправлено: 17:20, 14-04-2010 | #3 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать #Include <GDIP.au3> #Include <WinAPI.au3> Global Const $STM_SETIMAGE = 0x0172 Global Const $STM_GETIMAGE = 0x0173 Dim $Pic[4] GUICreate('MyGUI', 4 * 128, 128) For $i = 0 To 3 $Pic[$i] = GUICtrlCreatePic('', $i * 128, 0, 128, 128) Next _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile('Arrow.png') For $i = 0 To 3 _GDIPlus_ImageRotateFlip($hImage, 1) _SetImage($Pic[$i], _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)) Next _GDIPlus_ImageDispose($hImage) _GDIPlus_Shutdown() GUISetState() Do Until GUIGetMsg() = -3 Func _SetImage($hWnd, $hBitmap) If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd) If Not $hWnd Then Return EndIf EndIf Local $hObj $hObj = _SendMessage($hWnd, $STM_SETIMAGE, 0, $hBitmap) If $hObj Then _WinAPI_DeleteObject($hObj) EndIf _WinAPI_InvalidateRect($hWnd) $hObj = _SendMessage($hWnd, $STM_GETIMAGE) If $hObj <> $hBitmap Then _WinAPI_DeleteObject($hBitmap) EndIf EndFunc ;==>_SetImage |
Отправлено: 19:06, 14-04-2010 | #4 |
Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать А как сделать чтобы размер картинки подстраивался под размер "GUICtrlCreatePic"
|
|
Отправлено: 19:16, 15-04-2010 | #5 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать Цитата FlatX007:
#Include <GDIP.au3> #Include <WinAPI.au3> #Include <WindowsConstants.au3> Global Const $STM_SETIMAGE = 0x0172 Global Const $STM_GETIMAGE = 0x0173 Dim $Pic[4] GUICreate('MyGUI', 4 * 128, 128) For $i = 0 To 3 $Pic[$i] = GUICtrlCreatePic('', $i * 128, 0, 128, 128) Next _GDIPlus_Startup() $hPic = _GDIPlus_ImageLoadFromFile('Arrow.png') For $i = 0 To 3 _GDIPlus_ImageRotateFlip($hPic, 1) $W = _GDIPlus_ImageGetWidth($hPic) $H = _GDIPlus_ImageGetHeight($hPic) $Size = WinGetClientSize(GUICtrlGetHandle($Pic[$i])) If ($W) And ($H) And (IsArray($Size)) Then If $W < $H Then $W = $Size[0] * $W / $H $H = $Size[1] Else $H = $Size[1] * $H / $W $W = $Size[0] EndIf $hBitmap = _WinAPI_CreateBitmap($Size[0], $Size[1], 1, 32) $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap) _WinAPI_DeleteObject($hBitmap) $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage) $hBrush = _GDIPlus_BrushCreateSolid(BitOR(0xFF000000, _WinAPI_SwitchColor(_WinAPI_GetSysColor($COLOR_3DFACE)))) _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, $Size[0], $Size[1], $hBrush) _GDIPlus_GraphicsDrawImageRect($hGraphic, $hPic, ($Size[0] - $W) / 2, ($Size[1] - $H) / 2, $W, $H) _SetImage($Pic[$i], _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_BrushDispose($hBrush) _GDIPlus_ImageDispose($hImage) EndIf Next _GDIPlus_ImageDispose($hPic) _GDIPlus_Shutdown() GUISetState() Do Until GUIGetMsg() = -3 Func _SetImage($hWnd, $hBitmap) If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd) If Not $hWnd Then Return EndIf EndIf Local $hObj $hObj = _SendMessage($hWnd, $STM_SETIMAGE, 0, $hBitmap) If $hObj Then _WinAPI_DeleteObject($hObj) EndIf _WinAPI_InvalidateRect($hWnd) $hObj = _SendMessage($hWnd, $STM_GETIMAGE) If $hObj <> $hBitmap Then _WinAPI_DeleteObject($hBitmap) EndIf EndFunc ;==>_SetImage Func _WinAPI_SwitchColor($iColor) Return BitOR(BitAND($iColor, 0x00FF00), BitShift(BitAND($iColor, 0x0000FF), -16), BitShift(BitAND($iColor, 0xFF0000), 16)) EndFunc ;==>_WinAPI_SwitchColor |
|
Отправлено: 00:37, 16-04-2010 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Повернуть и обрезать видео | alexra | Видео и аудио: обработка и кодирование | 2 | 01-01-2010 15:16 | |
Не работает GUI после выхода другова GUI | sashadeg | AutoIt | 3 | 15-05-2009 22:03 | |
Повернуть видео изображение. | CaminoDeFlores | Видео и аудио: обработка и кодирование | 0 | 11-03-2009 20:09 | |
Повернуть видео на X градусов | dascon | Видео и аудио: обработка и кодирование | 13 | 31-07-2005 11:38 | |
Изображение повернуто на 90 градусов | Fredd | Microsoft Windows 95/98/Me (архив) | 6 | 31-05-2005 08:01 |
|