【已解决】GUI 控件能够创建字带边框的效果吗?
本帖最后由 chishingchan 于 2023-10-14 20:09 编辑如图:
请教各位,谢谢!
本帖最后由 chishingchan 于 2023-10-14 19:05 编辑
搜索论坛,看看帮助,弄了一个四不象!
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
Example()
Func Example()
Local $hGUI, $hGraphic, $hBrush, $hPen, $hPath, $hFamily, $tLayout
$hGUI = GUICreate("文字带边框", 240, 50)
GUISetState(@SW_SHOW)
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF7F7F00) ;字体颜色
$hPen = _GDIPlus_PenCreate(0xFFFFFFFF, 3) ;边框颜色
$hPath = _GDIPlus_PathCreate()
$hFamily = _GDIPlus_FontFamilyCreate("宋体")
$tLayout = _GDIPlus_RectFCreate()
_GDIPlus_PathAddString($hPath, "说:我是谁", $tLayout, $hFamily, 0, 48, 0)
_GDIPlus_GraphicsSetSmoothingMode($hGraphic, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
_GDIPlus_GraphicsClear($hGraphic, 0xFF30A3FE) ;背景色
_GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush)
_GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen)
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_PathDispose($hPath)
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
EndFunc
描边效果?
GUICreate('')
GUISetBkColor(0x55ff)
GUISetFont(30, 700)
Local $aPos1[] =
GUICtrlCreateLabel($aPos1, $aPos1 - 1, $aPos1 - 1, $aPos1, $aPos1)
GUICtrlSetColor(-1, 0xffffff)
GUICtrlCreateLabel($aPos1, $aPos1 + 1, $aPos1 + 1, $aPos1, $aPos1)
GUICtrlSetColor(-1, 0xffffff)
GUICtrlSetBkColor(-1, -2)
GUICtrlCreateLabel($aPos1, $aPos1 + 1, $aPos1 - 1, $aPos1, $aPos1)
GUICtrlSetColor(-1, 0xffffff)
GUICtrlSetBkColor(-1, -2)
GUICtrlCreateLabel($aPos1, $aPos1 - 1, $aPos1 + 1, $aPos1, $aPos1)
GUICtrlSetColor(-1, 0xffffff)
GUICtrlSetBkColor(-1, -2)
GUICtrlCreateLabel($aPos1, $aPos1, $aPos1, $aPos1, $aPos1)
GUICtrlSetColor(-1, 0xff2222)
GUICtrlSetBkColor(-1, -2)
GUISetState()
Do
Until GUIGetMsg() = -3 不会调整!
afan 发表于 2023-10-14 19:21
描边效果?
a 大,边框的大小能调吗? chishingchan 发表于 2023-10-14 19:23
a 大,边框的大小能调吗?
这种方式不宜设置宽边,要宽边需要GDI+使用路径绘制等方式。如果控件需交互,则处理较繁琐。
直接用Label 叠加处理则可以更简单灵活易懂。如有多个控件也可以直接写成函数调用。
GUICreate('')
GUISetBkColor(0x55ff)
GUISetFont(30, 700, 0, '微软雅黑')
Local $aPos1[] = ;x ;y ;w; h; 边宽; 边色; 字色
GUICtrlCreateLabel($aPos1, $aPos1 - $aPos1, $aPos1 - $aPos1, $aPos1, $aPos1)
GUICtrlSetColor(-1, $aPos1)
GUICtrlCreateLabel($aPos1, $aPos1 + $aPos1, $aPos1 + $aPos1, $aPos1, $aPos1)
GUICtrlSetColor(-1, $aPos1)
GUICtrlSetBkColor(-1, -2)
GUICtrlCreateLabel($aPos1, $aPos1 + $aPos1, $aPos1 - $aPos1, $aPos1, $aPos1)
GUICtrlSetColor(-1, $aPos1)
GUICtrlSetBkColor(-1, -2)
GUICtrlCreateLabel($aPos1, $aPos1 - $aPos1, $aPos1 + $aPos1, $aPos1, $aPos1)
GUICtrlSetColor(-1, $aPos1)
GUICtrlSetBkColor(-1, -2)
GUICtrlCreateLabel($aPos1, $aPos1, $aPos1, $aPos1, $aPos1)
GUICtrlSetColor(-1, $aPos1)
GUICtrlSetBkColor(-1, -2)
GUISetState()
Do
Until GUIGetMsg() = -3 afan 发表于 2023-10-14 19:40
这种方式不宜设置宽边,要宽边需要GDI+使用路径绘制等方式。如果控件需交互,则处理较繁琐。
直接用Labe ...
1# 的文字是 加粗宋体,大小36像素,边框是2像素。将微软雅黑改为宋体,惨不忍睹。 chishingchan 发表于 2023-10-14 19:45
1# 的文字是 加粗宋体,大小36像素,边框是2像素。将微软雅黑改为宋体,惨不忍睹。
所以我上面说了。 afan 发表于 2023-10-14 19:48
所以我上面说了。
放弃了!程序换种方式再写。谢谢! 用html思路会不会容易实现一点?
页:
[1]