Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Повернуть изображение на 90 градусов в GUI окне.

Ответить
Настройки темы
[решено] Повернуть изображение на 90 градусов в GUI окне.

Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg arrow.jpg
(14.0 Kb, 5 просмотров)
Как мне в одном GUI окне использовать ОДНУ картинку 2 раза причём вторая картинка должна быть повёрнута на 90 градусов. См скрин.



Код: Выделить весь код
$Form1 = GUICreate("Form1", 236, 133, 573, 455)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\arrow.jpg", 16, 16, 100, 100)
$Pic2 = GUICtrlCreatePic(@ScriptDir & "\arrow.jpg", 120, 16, 100, 100)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
    EndSwitch
WEnd

Отправлено: 16:39, 14-04-2010

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


FlatX007,
А не проще сделать 2 или сразу 4 картинки заранее?

Отправлено: 17:11, 14-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Было бы проще я бы так и сделал

Отправлено: 17:20, 14-04-2010 | #3


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png Arrow.png
(9.3 Kb, 11 просмотров)

Код: Выделить весь код
#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
GDIP UDF
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:06, 14-04-2010 | #4


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


А как сделать чтобы размер картинки подстраивался под размер "GUICtrlCreatePic"

Отправлено: 19:16, 15-04-2010 | #5


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Цитата FlatX007:
А как сделать чтобы размер картинки подстраивался под размер "GUICtrlCreatePic" »
Усложняем задачу...



Код: Выделить весь код
#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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Повернуть изображение на 90 градусов в GUI окне.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Повернуть и обрезать видео 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




 
Переход