Автор Тема: Создание красивых градиентов с помощью WinAPI  (Прочитано 3630 раз)

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

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2696
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Способ создания красивых градиентов средствами WinAPI. Для запуска примера необходимо скачать библиотеку WinAPIEx.au3.


Код: AutoIt [Выделить]
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global Const $STM_SETIMAGE = 0x0172
Global Const $STM_GETIMAGE = 0x0173

Global $hForm, $Pic, $hPic, $hObj, $hBitmap, $hDC, $hMemDC, $hMemSv

Dim $aVertex[6][3] = [[0, 0, 0xFF0000], [400, 400, 0x00FF00], [  0, 400, 0x0000FF], _
                      [0, 0, 0xFF0000], [400,   0, 0xFFFF00], [400, 400, 0x00FF00]]

; Create GUI
$hForm = GUICreate('MyGUI', 400, 400)
$Pic = GUICtrlCreatePic('', 0, 0, 400, 400)
$hPic = GUICtrlGetHandle($Pic)

; Create gradient
$hDC = _WinAPI_GetDC($hPic)
$hMemDC = _WinAPI_CreateCompatibleDC($hDC)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, 400, 400)
$hMemSv = _WinAPI_SelectObject($hMemDC, $hBitmap)
_WinAPI_GradientFill($hMemDC, $aVertex, 0, 2)
_WinAPI_GradientFill($hMemDC, $aVertex, 3, 5)

_WinAPI_ReleaseDC($hPic, $hDC)
_WinAPI_SelectObject($hMemDC, $hMemSv)
_WinAPI_DeleteDC($hMemDC)

; Set gradient to control
_SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
$hObj = _SendMessage($hPic, $STM_GETIMAGE)
If $hObj <> $hBitmap Then
    _WinAPI_DeleteObject($hBitmap)
EndIf

GUISetState()

Do
Until GUIGetMsg() = -3

« Последнее редактирование: Октябрь 20, 2009, 02:07:29 от Yashied »


Думай, прежде чем говорить.

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

Создание красивых градиентов с помощью WinAPI
« Отправлен: Октябрь 20, 2009, 02:01:08 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
3382 Просмотров
Последний ответ Март 29, 2010, 02:10:38
от Yashied
2 Ответов
2737 Просмотров
Последний ответ Июнь 20, 2012, 12:56:01
от SurikenTSD
1 Ответов
2761 Просмотров
Последний ответ Октябрь 03, 2012, 21:38:46
от Zaramot
8 Ответов
5778 Просмотров
Последний ответ Сентябрь 16, 2014, 16:55:11
от oesoes
3 Ответов
2363 Просмотров
Последний ответ Август 14, 2013, 15:43:06
от firex
1 Ответов
1654 Просмотров
Последний ответ Март 27, 2016, 19:09:10
от firex
1 Ответов
878 Просмотров
Последний ответ Июль 06, 2016, 16:41:33
от inververs
0 Ответов
229 Просмотров
Последний ответ Январь 22, 2018, 00:15:56
от sh01u
0 Ответов
306 Просмотров
Последний ответ Февраль 24, 2018, 10:30:55
от TpeTTep
0 Ответов
119 Просмотров
Последний ответ Июль 17, 2018, 14:01:58
от eysh