PDA

Показать полную графическую версию : [решено] Красивый интерфейс GUI


Nik_rus
07-08-2009, 12:26
Часто бывает что для клиента важна "оболочка" программы.
Столкнулся с проблемой - нужно сделать КНОПКУ (причем работающую :shout: ) из PNG файла. ( не помешало бы и другие типа edit и label...)
Но там мне "практически" ясно все (GDI udf...)
Но опять-же проблема - при сворачивании окна или становления его же неактивным картинки пропадают :shot:
Что делать ? Я пытался отлавливать сворачивание окна и прорисовывать заного, но иногда не срабатывало =( .
Я в упадке

FlatX007
07-08-2009, 16:02
Столкнулся с проблемой - нужно сделать КНОПКУ (причем работающую ) из PNG файла. »

В GUI окна в качестве изображений кнопок вставляются BMP картинки а не PNG

Гдето тут
http://forum.oszone.net/thread-143513.html

Nik_rus
07-08-2009, 16:12
Дело в том что мне нужно сделать края кнопки прозрачными :(

FlatX007
07-08-2009, 16:19
Выложи скрипта который ты уже написал ...

Nik_rus
07-08-2009, 16:21
#include <GUIConstants.au3>
#Include <GuiEdit.au3>
#include <GuiListBox.au3>
#include <GDIPlus.au3>
$dd="DarkDragon"
_GDIPlus_StartUp()
_CreateGuiFace($dd)
Func _CreateGuiFace($title)
Global $main = GuiCreate($title, 640, 480)
GuiSetState()
;---Объявление и прорисовка---
_DrawImgs()
;---Рисуем фейс---
_DrawCtrl()
;---Loop---
While 1
If GUIGetMsg() = $GUI_EVENT_RESTORE Then
Sleep(100)
_DrawImgs()
EndIf
If GUIGetMsg() = $GUI_EVENT_CLOSE Then
_ProgShutdown()
EndIf
WEnd
;----------
EndFunc

Func _DrawImgs()
Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($main)
Global $bg = _GDIPlus_ImageLoadFromFile("Style\bg.png")
_GDIPlus_GraphicsDrawImage($hGraphic, $bg, 0, 0)
Global $plistbg = _GDIPlus_ImageLoadFromFile("Style\plist.png")
_GDIPlus_GraphicsDrawImage($hGraphic, $plistbg, 485, 25)
Global $bgchat = _GDIPlus_ImageLoadFromFile("Style\bgchat.png")
_GDIPlus_GraphicsDrawImage($hGraphic, $bgchat, 26, 25)
Global $messguibg = _GDIPlus_ImageLoadFromFile("Style\mess.png")
_GDIPlus_GraphicsDrawImage($hGraphic, $messguibg, 26, 419)
Global $but = GUICtrlCreateButton("Send", 545, 425,45,22)
GUICtrlSetBkColor($but,0xb0b0b0)
Global $butbg = _GDIPlus_ImageLoadFromFile("Style\but.png")
_GDIPlus_GraphicsDrawImage($hGraphic, $butbg, 530, 420)
EndFunc

Func _DrawCtrl()
Global $plist = GUICtrlCreateList( "Nik(rus)", 495, 35 ,110,365,0,2)
_GUICtrlListBox_AddString($plist,"1234")
GUICtrlSetBkColor($plist,0xb0b0b0)
Global $editchat = GUICtrlCreateEdit("123", 35, 35, 410, 365,0x0040+0x0004+0x0800)
GuiCtrlSetBkColor($editchat,0xb0b0b0)
Global $messgui = GUICtrlCreateEdit("Message here", 44, 427, 445, 19,0)
GUICtrlSetBkColor($messgui,0xb0b0b0)
EndFunc

Func _GDI_Shutdown()
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($bg)
_GDIPlus_ImageDispose($plistbg)
_GDIPlus_ImageDispose($bgchat)
_GDIPlus_ImageDispose($messguibg)
_GDIPlus_ImageDispose($butbg)
GUICtrlDelete($but)
EndFunc

Func _GUI_Shutdown()
GUICtrlDelete($plist)
GUICtrlDelete($editchat)
GUICtrlDelete($messgui)
EndFunc

Func _ProgShutdown()
_GDI_Shutdown()
_GDIPlus_ShutDown()
GUIDelete()
Exit
EndFunc

Nik_rus
07-08-2009, 16:30
Вот вся папка со стилем

FlatX007
07-08-2009, 17:01
Ой даже незнаю ты тут наворотил функций UDF ... я фиг знаю что с ними делать.

Помойму проще нарисовать ОбщийБэкграунд одним файлом , задисабить его (отключить) чтобы кнопки срабатывали которые поверх картинки и прорисовать всё остальное ...

Nik_rus
07-08-2009, 17:45
А как его собсно задисабить ?
Ну допустим я это сделал... но ведь если я нажму на кнопку она появится !
+ если свернуть то рисунок пропадет... как я раньше писал

FlatX007
07-08-2009, 20:36
Тут ... =)

Nik_rus
07-08-2009, 21:09
Ну вы видимо прониклись идеей проекта.
Однако самая важная проблема - кнопка та тут как тут (нужно чтобы её заменяла картинка или чтоб её не было видно, но она функционировала)

SyDr
07-08-2009, 23:26
Может быть просто не использовать кнопку?
А вместо этого обрабатывать клик по "кнопке" вручную?

FlatX007
07-08-2009, 23:40
Возможно таг ? больше ничё путного предложить немогу

Belfigor
08-08-2009, 03:10
А реально ли превратить окно из 1 в 2?

Nik_rus
08-08-2009, 12:21
Belfigor, сомневаюсь.
FlatX007, видимо придется отказаться от закругленных краев...и заюзать bmp =)
А за пример - спасибо

FlatX007
08-08-2009, 19:18
А реально ли превратить окно из 1 в 2? »

Можно - причём относительно просто =)

crashtuak
08-08-2009, 20:21
Нашлось решение: http://www.autoitscript.com/forum/index.php?showtopic=92675. Штука помогает обычным GUICtrlCreatePic создать на форме png рисунок, и никаких заморочок с GDIPlus. Дальше на событиях мышки можно строить полупрозрачные кнопки.

Nik_rus
08-08-2009, 21:08
Да, действительно работает... СПАСИБО :)




© OSzone.net 2001-2012