Вверх ↑
Этот топик читают: Гость
Ответов: 156
Рейтинг: 1
#1: 2025-05-06 23:47:17 ЛС | профиль | цитата
Подскажите, можно ли на форме расположить кнопку и надпись на ней соответственно, под углом 45 градусов?
А также это нужно сделать с картинкой, но не просто её вращать путем эффекта, а как бы сам элемент вывода графики чтоб был расположен под углом.

Редактировалось 3 раз(а), последний 2025-05-06 23:51:39
карма: 1

0
Ответов: 2377
Рейтинг: 685
#2: 2025-05-08 08:29:23 ЛС | профиль | цитата
В windows нет таких кнопок, все в основном прямоугольное (окна, панели, кнопки и т.д.). Если есть желание создать какой-то свой вид интерфейсного элемента, к примеру кнопку нестандартной формы, то можно воспользоваться элементами из вкладки Окно\Регионы, с их помощью можно задать любую форму элементу (примеры есть в справки и в папке идущей с HiAsm). А нарисовать нужный текст, тени, картинку можно используя элементы вкладки Графика.
Gitarist писал(а):
но не просто её вращать путем эффекта, а как бы сам элемент вывода графики чтоб был расположен под углом.
Вот это не понятно.
карма: 11

0
Ответов: 2377
Рейтинг: 685
#3: 2025-05-08 10:26:00 ЛС | профиль | цитата
Вот пример того как это можно сделать:

Add(MainForm,2953706,231,224)
{
Width=689
Height=479
}
Add(ChildPanelEx,14568428,280,224)
{
}
BEGIN_SDK
Add(EditMultiEx,5865423,21,21)
{
Width=818
Height=830
}
Add(Panel,699971,119,280)
{
Left=245
Top=125
Width=214
Height=166
Cursor=2
Name="myButton"
BorderWidth=0
BevelWidth=0
BevelInner=0
DoubleBuffered=0
DrawSelfContext=0
Point(Handle)
Point(onPaint)
Point(Width)
Point(Height)
Point(onMouseDown)
Point(onMouseUp)
Point(onMouseLeave)
link(onPaint,9821434:doEvent1,[])
link(onMouseDown,3475397:doEvent,[(186,300)(186,629)])
link(onMouseUp,1749612:doWork1,[(174,307)])
link(onMouseLeave,1749612:doWork2,[])
AddHint(-16,-28,59,13,Name)
}
Add(Img_Edge,8157997,560,280)
{
Point2AsOffset=0
bfMiddle=0
Point(Transform)
link(Bitmap,14826833:getVar,[])
link(Point2,16531370:getVar,[])
link(Transform,8557198:Transform,[(594,268)(622,268)])
}
Add(MathParse,8764985,301,133)
{
MathStr="%1 + (%2) * 65536"
link(X1,10830438:getVar,[])
link(X2,7302820:getVar,[])
}
Add(Hub,9821434,252,287)
{
OutCount=3
link(onEvent1,8764985:doCalc,[(284,293)(284,139)])
link(onEvent2,2731871:doData,[])
link(onEvent3,15357514:doDraw,[(291,307)(291,524)])
}
Add(Img_UseRotate,8557198,616,224)
{
Angle=45
link(AddTransform,12254991:Transform,[])
}
Add(Bitmap,9248445,357,280)
{
FillColor=16711935
Point(doCreate)
Point(onCreate)
Point(HWidth)
Point(HHeight)
link(onCreate,7697072:doEvent1,[])
link(HWidth,13916770:getVar,[])
link(HHeight,2924890:getVar,[])
}
Add(Img_UseScale,12254991,616,175)
{
X=0.5
Y=0.5
}
Add(RGN_OutlinePicture,2084810,462,301)
{
Transparent=16711935
Point(doPicture)
Point(doClear)
link(onOutlinePicture,15841827:doSetRegion,[])
link(SrcBitmap,12919153:getVar,[])
}
Add(RGN_SetToWindow,15841827,504,301)
{
link(Handle,11315193:Var,[])
}
Add(ChangeMon,2731871,315,294)
{
link(onData,9248445:doCreate,[])
link(Data,14053532:getVar,[])
}
Add(LineBreakEx,12950729,301,182)
{
Caption="pt2"
Type=3
link(_Data,8764985:Result,[])
}
Add(LineBreakEx,14053532,315,266)
{
Caption="pt2"
Type=2
}
Add(LineBreakEx,16531370,574,245)
{
Caption="pt2"
Type=2
}
Add(LineBreakEx,14826833,560,231)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,12919153,462,273)
{
Caption="bmp"
Type=2
}
Add(LineBreakEx,10144245,357,329)
{
Caption="bmp"
Type=3
link(_Data,9248445:Bitmap,[])
}
Add(LineBreak,2731858,119,357)
{
Caption="handle"
Type=1
link(Data,699971:Handle,[])
Primary=[11315193,385,-84]
}
Add(LineBreakEx,13916770,357,231)
{
Caption="w"
Type=2
}
Add(LineBreakEx,2924890,364,245)
{
Caption="h"
Type=2
}
Add(LineBreakEx,10830438,301,91)
{
Caption="w"
Type=2
}
Add(LineBreakEx,7302820,308,105)
{
Caption="h"
Type=2
}
Add(LineBreakEx,4947695,126,343)
{
Caption="w"
Type=3
link(_Data,699971:Width,[])
}
Add(LineBreakEx,1843145,133,329)
{
Caption="h"
Type=3
link(_Data,699971:Height,[])
}
Add(IndexToChanel,3475397,280,623)
{
Count=1
Data=Integer(1)
link(onEvent1,146819:doValue,[(323,629)(323,664)])
AddHint(1,-17,21,13,Data)
}
Add(Memory,146819,336,658)
{
Default=Integer(0)
link(onData,11771461:doCalc,[])
AddHint(0,-19,21,13,Default)
}
Add(RedrawManager,10394785,532,658)
{
ControlManager="myButton"
AddHint(11,-20,59,13,ControlManager)
}
Add(Hub,7697072,399,280)
{
OutCount=6
link(onEvent1,8157997:doDraw,[])
link(onEvent2,2084810:doPicture,[(453,293)(453,314)])
link(onEvent3,2084810:doClear,[(448,300)(448,321)])
link(onEvent4,12955014:doLoadPakIcons,[(441,307)(441,377)])
link(onEvent5,12746930:doRead,[(435,314)(435,433)])
link(onEvent6,12955014:doClearIcons,[(427,321)(427,370)])
}
Add(Img_Edge,15357514,301,518)
{
Point2AsOffset=0
DrawSource=2
bfMiddle=0
Point(Transform)
link(onDraw,4440818:doDraw,[])
link(Point2,16406954:getVar,[])
link(View,2048112:getVar,[])
link(Transform,16256511:Transform,[])
}
Add(Img_UseRotate,16256511,329,420)
{
Angle=45
link(AddTransform,419644:Transform,[])
}
Add(Img_UseScale,419644,329,378)
{
X=0.5
Y=0.5
}
Add(Img_TextInRect,4440818,357,518)
{
Point2AsOffset=0
DrawSource=2
Font=[Verdana,12,0,0,204]
Text="Тест"
AlignHorizon=2
Alignvertical=2
Point(Transform)
MakeExt(Text,Текст на кнопке,Text)
link(onDraw,11496173:doDraw,[])
link(Point1,6126247:Var,[])
link(Point2,10137878:getVar,[])
link(Transform,5455366:Transform,[])
}
Add(LineBreakEx,10137878,378,490)
{
Caption="pt2"
Type=2
}
Add(LineBreakEx,16406954,315,462)
{
Caption="pt2"
Type=2
}
Add(Img_UseRotate,5455366,385,420)
{
Angle=45
}
Add(HubEx,1749612,170,308)
{
Angle=1
link(onEvent,146819:doClear,[(174,671)])
}
Add(MathParse,11771461,385,658)
{
DataCount=1
MathStr="%1 + 1 + (%1 + 1) * 65536"
link(onResult,3109381:doCalc,[])
}
Add(LineBreak,13082180,385,707)
{
Caption="offset"
Type=1
link(Data,11771461:Result,[])
Primary=[6126247,-14,-231]
}
Add(Img_Bmp,11496173,623,518)
{
DrawSource=2
Point(Transform)
Point(X)
Point(Y)
link(SourceBitmap,14066710:Bitmap,[])
link(Transform,10975779:Transform,[(643,462)(671,462)])
link(X,690508:Var,[])
link(Y,16034723:Var,[])
}
Add(Img_UseRotate,10975779,665,420)
{
Angle=45
}
Add(Bitmap,14066710,630,413)
{
}
Add(LineBreakEx,2048112,322,490)
{
Caption="view"
Type=2
}
Add(LineBreakEx,3721059,336,707)
{
Caption="view"
Type=3
link(_Data,146819:Value,[])
}
Add(LineBreakEx,7296871,434,630)
{
Caption="view"
Type=2
}
Add(MathParse,3109381,434,658)
{
DataCount=1
MathStr="70 + %1"
Default=70
link(onResult,14463856:doCalc,[])
link(X1,7296871:getVar,[])
}
Add(LineBreakEx,10893246,483,630)
{
Caption="view"
Type=2
}
Add(MathParse,14463856,483,658)
{
DataCount=1
MathStr="50 + %1"
Default=50
link(onResult,10394785:doRedraw,[])
link(X1,10893246:getVar,[])
}
Add(LineBreak,155535,434,700)
{
Caption="x"
Type=1
link(Data,3109381:Result,[])
Primary=[690508,210,-224]
}
Add(LineBreak,2934743,483,700)
{
Caption="y"
Type=1
link(Data,14463856:Result,[])
Primary=[16034723,168,-210]
}
Add(Icon,5991567,574,413)
{
Transparent=-16777201
Point(doLoadIcon)
Point(doBitmap)
Point(onBitmap)
link(onBitmap,14066710:doLoad,[])
}
Add(Hub,12857810,546,427)
{
link(onEvent1,5991567:doLoadIcon,[])
link(onEvent2,5991567:doBitmap,[])
}
Add(WorkIconsManager,12955014,455,364)
{
IconsFileName="C:\Windows\System32\imageres.dll"
IconsManager="winIcons"
Point(doLoadPakIcons)
Point(IconsFileName)
AddHint(-20,-19,57,13,IconsManager)
}
Add(ArrayRW,12746930,497,427)
{
Index=Integer(83)
link(onRead,12857810:doEvent1,[])
link(Array,1218854:IconArray,[])
AddHint(11,-28,27,13,Index)
}
Add(IconsManager,1218854,497,364)
{
Name="winIcons"
ImgSize=24
ImgBkColor=-16777201
Icons=[]
AddHint(7,-18,57,13,Name)
}
END_SDK
карма: 11

0
Ответов: 156
Рейтинг: 1
#4: 2025-05-08 13:53:00 ЛС | профиль | цитата
Спасибо за ответ. Вы все правильно поняли.

sla8a писал(а):
Вот пример того как это можно сделать:


О_о ОМГ, вот это схемище... ну его нафик тогда. Однако, благодарю, есть чего подчерпнуть.
карма: 1

0
Ответов: 2377
Рейтинг: 685
#5: 2025-05-08 19:30:10 ЛС | профиль | цитата
Gitarist писал(а):
вот это схемище
А что не так по вашему в этой схеме? Если это о сложности, то тут всего то элементов 15 (не считая "хабов") от силы для обычной кнопки с текстом:

Add(MainForm,12922657,301,91)
{
Width=689
Height=479
}
Add(ChildPanelEx,14568428,371,91)
{
}
BEGIN_SDK
Add(EditMultiEx,5865423,21,21)
{
Width=818
Height=830
}
Add(Panel,699971,119,280)
{
Left=245
Top=125
Width=214
Height=166
Cursor=2
Name="myButton"
BorderWidth=0
BevelWidth=0
BevelInner=0
DoubleBuffered=0
DrawSelfContext=0
Point(Handle)
Point(onPaint)
Point(Width)
Point(Height)
Point(onMouseDown)
Point(onMouseUp)
Point(onMouseLeave)
link(onPaint,9821434:doEvent1,[])
link(onMouseDown,3475397:doEvent,[(186,300)(186,398)])
link(onMouseUp,1749612:doWork1,[(172,307)])
link(onMouseLeave,1749612:doWork2,[])
AddHint(-16,-28,59,13,Name)
}
Add(Img_Edge,8157997,511,280)
{
Point2AsOffset=0
bfMiddle=0
Point(Transform)
link(Bitmap,10234714:Var3,[(517,269)])
link(Point2,6887177:Var3,[(531,264)])
link(Transform,4845799:Var1,[(545,264)])
}
Add(MathParse,8764985,287,224)
{
MathStr="%1 + (%2) * 65536"
link(X1,15108167:Var2,[])
link(X2,7768930:Var2,[])
}
Add(Hub,9821434,224,287)
{
OutCount=3
link(onEvent1,8764985:doCalc,[(256,293)(256,230)])
link(onEvent2,2731871:doData,[])
link(onEvent3,15357514:doDraw,[(242,307)(242,538)])
}
Add(Img_UseRotate,8557198,609,224)
{
Angle=45
link(AddTransform,12254991:Transform,[])
}
Add(Bitmap,9248445,329,280)
{
FillColor=16711935
Point(doCreate)
Point(onCreate)
Point(HWidth)
Point(HHeight)
link(onCreate,7697072:doEvent1,[])
link(HWidth,15108167:Var3,[(335,212)])
link(HHeight,7768930:Var3,[(342,202)])
}
Add(Img_UseScale,12254991,609,175)
{
X=0.5
Y=0.5
}
Add(RGN_OutlinePicture,2084810,413,301)
{
Transparent=16711935
Point(doPicture)
Point(doClear)
link(onOutlinePicture,15841827:doSetRegion,[])
link(SrcBitmap,10234714:Var2,[])
}
Add(RGN_SetToWindow,15841827,455,301)
{
link(Handle,699971:Handle,[(461,289)(528,289)(528,351)(125,351)])
}
Add(ChangeMon,2731871,287,294)
{
link(onData,9248445:doCreate,[])
link(Data,6887177:Var2,[])
}
Add(IndexToChanel,3475397,343,392)
{
Count=1
Data=Integer(1)
link(onEvent1,146819:doValue,[(386,398)(386,426)])
AddHint(1,-17,21,13,Data)
}
Add(Memory,146819,399,420)
{
Default=Integer(0)
link(onData,11771461:doCalc,[])
AddHint(0,-19,21,13,Default)
}
Add(RedrawManager,10394785,490,420)
{
ControlManager="myButton"
AddHint(11,-20,59,13,ControlManager)
}
Add(Hub,7697072,371,280)
{
OutCount=3
link(onEvent1,8157997:doDraw,[])
link(onEvent2,2084810:doPicture,[(400,293)(400,314)])
link(onEvent3,2084810:doClear,[(392,300)(392,321)])
}
Add(Img_Edge,15357514,252,532)
{
Point2AsOffset=0
DrawSource=2
bfMiddle=0
Point(Transform)
link(onDraw,4440818:doDraw,[])
link(Point2,6550371:Var2,[])
link(View,146819:Value,[(279,467)(405,467)])
link(Transform,4845799:Var2,[(286,524)(615,524)])
}
Add(Img_TextInRect,4440818,301,532)
{
Point2AsOffset=0
DrawSource=2
Font=[Verdana,12,0,0,204]
Text="Тест"
AlignHorizon=2
Alignvertical=2
Point(Transform)
MakeExt(Text,Текст на кнопке,Text)
link(Point1,11771461:Result,[(321,489)(454,489)])
link(Point2,6550371:Var3,[(328,516)])
link(Transform,2450426:Transform,[(335,513)(538,513)])
}
Add(HubEx,1749612,168,308)
{
Angle=1
link(onEvent,146819:doClear,[(172,433)])
}
Add(MathParse,11771461,448,420)
{
DataCount=1
MathStr="%1 + 1 + (%1 + 1) * 65536"
link(onResult,10394785:doRedraw,[])
}
Add(GetDataEx,4845799,609,259)
{
link(Data,8557198:Transform,[])
}
Add(GetDataEx,6887177,287,259)
{
link(Data,8764985:Result,[])
}
Add(GetDataEx,15108167,287,207)
{
Angle=3
link(Data,699971:Width,[(207,212)(207,339)(132,339)])
}
Add(GetDataEx,7768930,294,197)
{
Angle=3
link(Data,699971:Height,[(195,202)(195,330)(139,330)])
}
Add(GetDataEx,10234714,413,264)
{
Angle=3
link(Data,9248445:Bitmap,[(368,269)(368,324)(335,324)])
}
Add(GetDataEx,6550371,266,511)
{
link(Data,6887177:Var1,[(272,264)])
}
Add(Img_UseRotate,2450426,532,420)
{
Angle=45
}
END_SDK
В первом примеру удалить добавления иконки из ресурсов, вставить свою и добавить два MathParse для расчета позиции картинки при изменении размеров панели и тоже универсальная кнопка. Обратите внимание на свойства панели перед входом в нее, там выведено свойство текст (наследуется от Img_TextInRect внутри контейнера). Так же можно вывести свойство для замены картинки. И все готовый элемент кнопка под углом 45 градусов.
карма: 11

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)