Вверх ↑
Этот топик читают: Гость
Ответов: 147
Рейтинг: 3
#1: 2025-02-24 14:50:00 ЛС | профиль | цитата
Всем привет!
Столкнулся с отрисовкой градиента в дочерней форме - не отрисовывается. В примере при масштабировании рисуется черный фон. Также бывают случаи, когда проблема была на главной форме - вся форма прозрачная при установлении свойства Transparent в label на дочерней форме, отображаемая первой при запуске. Я что-то не так делаю? Прошу помощи
Add(MainForm,2953706,147,91){
Point(onPaint)
Point(Width)
Point(Height)
link(onPaint,7145275:doDraw,[(191,118)(191,164)(121,164)(121,209)])
}
Add(Img_Gradient,7145275,133,203)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,14663649:Point,[])
}
Add(PointXY,14663649,147,154)
{
link(X,2953706:Width,[])
link(Y,2953706:Height,[])
}
Add(ChildForm,2004056,434,266)
{
}
BEGIN_SDK
Add(EditMulti,4519004,21,21)
{
WorkCount=1
Height=312
link(doWork1,4647957:doVisible,[(56,27)(56,97)])
}
Add(MainForm,4647957,91,63)
{
Left=35
Top=105
Point(Width)
Point(Height)
Point(doVisible)
link(onCreate,6641244:doDraw,[(135,83)(135,132)(65,132)(65,181)])
}
Add(Img_Gradient,6641244,77,175)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,5568008:Point,[])
}
Add(PointXY,5568008,91,126)
{
link(X,4647957:Width,[])
link(Y,4647957:Height,[])
}
END_SDK
Add(Button,7939524,364,266)
{
Left=130
Top=130
Data=Integer(1)
link(onClick,2004056:doWork1,[])
}
Add(Label,9698148,287,175)
{
Left=265
Top=160
Transparent=0
}

Редактировалось 2 раз(а), последний 2025-02-24 14:50:53
карма: 1

0
Ответов: 866
Рейтинг: 186
#2: 2025-02-24 22:12:58 ЛС | профиль | цитата
strannik_nebes писал(а):
Также бывают случаи, когда проблема была на главной форме - вся форма прозрачная при установлении свойства Transparent в label на дочерней форме, отображаемая первой при запуске. Я что-то не так делаю?

А почему не сделать так?
Add(MainForm,234531,126,105)
{
Point(onPaint)
Point(Width)
Point(Height)
link(onPaint,7145275:doDraw,[(170,132)(170,178)(100,178)(100,223)])
}
Add(Img_Gradient,7145275,112,217)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,14663649:Point,[])
}
Add(PointXY,14663649,126,168)
{
link(X,234531:Width,[])
link(Y,234531:Height,[])
}
Add(ChildForm,2004056,413,280)
{
}
BEGIN_SDK
Add(EditMulti,4519004,21,21)
{
WorkCount=1
Height=312
link(doWork1,4647957:doVisible,[(56,27)(56,97)])
}
Add(MainForm,4647957,91,63)
{
Left=35
Top=105
Visible=1
Point(Width)
Point(Height)
Point(doVisible)
}
Add(ChildPanelRush,14020496,203,189)
{
}
BEGIN_SDK
Add(EditMultiEx,5572011,21,21)
{
}
Add(PanelRush,8160992,35,105)
{
Left=35
Top=105
Align=5
ColorFrom=-16777192
ColorTo=16761414
GradientStyle=2
Glyphs=[]
}
Add(Label,7665714,140,77)
{
Left=265
Top=160
Transparent=0
}
END_SDK
END_SDK
Add(Button,7939524,343,280)
{
Left=130
Top=130
Data=Integer(1)
link(onClick,2004056:doWork1,[])
}
Add(Label,9698148,266,189)
{
Left=265
Top=160
Transparent=0
}


Редактировалось 1 раз(а), последний 2025-02-24 22:16:53
карма: 18

0
Ответов: 147
Рейтинг: 3
#3: 2025-02-25 08:34:22 ЛС | профиль | цитата
Gunta, ничего не изменилось, те же проблемы. Добавляю графические контролы - не отображаются. Если увеличить размер окна- черный цвет фона. Стоит только отключить прозрачность label на главной форме- все отображается как надо. Ошибка в компонентах? Windows 10 x64 Pro

https://i.mcgl.ru/IyeXz46czm

Редактировалось 6 раз(а), последний 2025-02-25 08:44:27
карма: 1

0
Ответов: 519
Рейтинг: 166
#4: 2025-02-25 10:12:31 ЛС | профиль | цитата
В Windows 11 Pro 24H2 .Этот вариант у меня работает.

карма: 4

0
Ответов: 147
Рейтинг: 3
#5: 2025-02-25 10:46:57 ЛС | профиль | цитата
Подобная проблема возникает и при использовании компонента для стиля aero (черный фон). У одних работает-а у других нет. У меня не работает. Хотя на пк у меня стоят все библиотеки для основных программ.

Отчего это происходит, мне непонятно, но судя по темам форума - это проблема с рождения hiasm. Файла KOL у меня отсутствует.

Редактировалось 3 раз(а), последний 2025-02-25 11:00:31
карма: 1

0
Ответов: 2324
Рейтинг: 681
#6: 2025-02-25 12:20:39 ЛС | профиль | цитата
strannik_nebes, в схеме в первом посте в дочерней форме вместо onPaint задействована onCreate. А так:
Справка по Label писал(а):
Использование св-ва Transparent может привести к неверной работе в отрисовке остальных элементов формы. Поэтому рекомендуется не использовать данную возможность без особой необходимости

Если нравится легкие извращения при создании программ, то как вариант:
Add(MainForm,14046,231,182)
{
Point(onPaint)
Point(Width)
Point(Height)
link(onPaint,7145275:doDraw,[(275,209)(275,255)(205,255)(205,300)])
}
Add(Img_Gradient,7145275,217,294)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,14663649:Point,[])
}
Add(PointXY,14663649,231,245)
{
link(X,14046:Width,[])
link(Y,14046:Height,[])
}
Add(ChildForm,2004056,539,315)
{
}
BEGIN_SDK
Add(EditMulti,4519004,21,21)
{
WorkCount=1
Height=312
link(doWork1,4647957:doVisible,[(56,27)(56,97)])
}
Add(MainForm,4647957,91,63)
{
Left=400
Top=105
Point(Width)
Point(Height)
Point(doVisible)
Point(onPaint)
link(onPaint,6641244:doDraw,[(135,90)(135,136)(65,136)(65,181)])
}
Add(Img_Gradient,6641244,77,175)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,5568008:Point,[])
}
Add(PointXY,5568008,91,126)
{
link(X,4647957:Width,[])
link(Y,4647957:Height,[])
}
END_SDK
Add(Button,7939524,483,315)
{
Left=130
Top=130
Data=Integer(1)
link(onClick,2004056:doWork1,[])
}
Add(Label,9698148,469,182)
{
Left=265
Top=160
Color=16711935
Point(Handle)
Point(onPaint)
Point(onEraseBkgnd)
link(onEraseBkgnd,7404208:doDeferredEvent,[(513,202)(513,172)(420,172)(420,237)])
}
Add(RGN_OutlinePicture,1517098,525,231)
{
Transparent=16711935
Point(doPicture)
Point(doClear)
link(onOutlinePicture,4747140:doSetRegion,[])
}
Add(ScreenShort,14713675,476,231)
{
link(onCapture,1517098:doPicture,[(513,237)(513,244)])
link(Handle,11428904:Var2,[])
}
Add(RGN_SetToWindow,4747140,567,231)
{
link(Handle,11428904:Var3,[(573,222)])
}
Add(GetDataEx,11428904,476,217)
{
link(Data,9698148:Handle,[])
}
Add(DeferredEvent,7404208,434,231)
{
link(onDeferredEvent,14713675:doCapture,[])
}

Редактировалось 1 раз(а), последний 2025-02-25 12:35:42
карма: 11

0
Ответов: 147
Рейтинг: 3
#7: 2025-02-25 14:02:18 ЛС | профиль | цитата
sla8a, Благодарю за отклик!
Думаю, такой вариант годится лишь для небольшого количества визуальных элементов типа label,CheckBox и простых программ. Прозрачность работает в статичном режиме
Add(MainForm,14046,196,175)
{
Point(onPaint)
Point(Width)
Point(Height)
link(onPaint,7145275:doDraw,[(240,202)(240,248)(170,248)(170,293)])
}
Add(Img_Gradient,7145275,182,287)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,14663649:Point,[])
}
Add(PointXY,14663649,196,238)
{
link(X,14046:Width,[])
link(Y,14046:Height,[])
}
Add(ChildForm,2004056,504,308)
{
}
BEGIN_SDK
Add(EditMulti,4519004,21,21)
{
WorkCount=1
Height=312
link(doWork1,4647957:doVisible,[(56,27)(56,97)])
}
Add(MainForm,4647957,91,63)
{
Left=400
Top=105
Point(Width)
Point(Height)
Point(doVisible)
Point(onPaint)
link(onPaint,6641244:doDraw,[(135,90)(135,136)(65,136)(65,181)])
}
Add(Img_Gradient,6641244,77,175)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,5568008:Point,[])
}
Add(PointXY,5568008,91,126)
{
link(X,4647957:Width,[])
link(Y,4647957:Height,[])
}
END_SDK
Add(Button,7939524,448,308)
{
Left=130
Top=130
Data=Integer(1)
link(onClick,2004056:doWork1,[])
}
Add(Label,9698148,434,175)
{
Left=265
Top=160
Color=16711935
Point(Handle)
Point(onPaint)
Point(onEraseBkgnd)
link(onEraseBkgnd,7404208:doDeferredEvent,[(478,195)(478,165)(385,165)(385,230)])
}
Add(RGN_OutlinePicture,1517098,490,224)
{
Transparent=16711935
Point(doPicture)
Point(doClear)
link(onOutlinePicture,4747140:doSetRegion,[])
}
Add(ScreenShort,14713675,441,224)
{
link(onCapture,1517098:doPicture,[(478,230)(478,237)])
link(Handle,11428904:Var2,[])
}
Add(RGN_SetToWindow,4747140,532,224)
{
link(Handle,11428904:Var3,[(538,215)])
}
Add(GetDataEx,11428904,441,210)
{
link(Data,9698148:Handle,[])
}
Add(DeferredEvent,7404208,399,224)
{
link(onDeferredEvent,14713675:doCapture,[])
}
Add(Edit,6037209,315,175)
{
Left=260
Top=115
link(onChange,9698148:doText,[])
}


Редактировалось 4 раз(а), последний 2025-02-25 14:23:42
карма: 1

0
Ответов: 2324
Рейтинг: 681
#8: 2025-02-25 15:05:55 ЛС | профиль | цитата
strannik_nebes, не нужно снимать скриншот с уже примененным регионом. Вначале сбросить регион, потом все по новому:
Add(MainForm,14046,287,133)
{
Point(onPaint)
Point(Width)
Point(Height)
link(onPaint,7145275:doDraw,[(331,160)(331,206)(261,206)(261,251)])
}
Add(Img_Gradient,7145275,273,245)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,14663649:Point,[])
}
Add(PointXY,14663649,287,196)
{
link(X,14046:Width,[])
link(Y,14046:Height,[])
}
Add(ChildForm,2004056,532,252)
{
}
BEGIN_SDK
Add(EditMulti,4519004,21,21)
{
WorkCount=1
Height=312
link(doWork1,4647957:doVisible,[(56,27)(56,97)])
}
Add(MainForm,4647957,91,63)
{
Left=400
Top=105
Point(Width)
Point(Height)
Point(doVisible)
Point(onPaint)
link(onPaint,6641244:doDraw,[(135,90)(135,136)(65,136)(65,181)])
}
Add(Img_Gradient,6641244,77,175)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,5568008:Point,[])
}
Add(PointXY,5568008,91,126)
{
link(X,4647957:Width,[])
link(Y,4647957:Height,[])
}
END_SDK
Add(Button,7939524,490,252)
{
Left=130
Top=130
Data=Integer(1)
link(onClick,2004056:doWork1,[])
}
Add(Label,9698148,525,126)
{
Left=265
Top=160
Color=16711935
Point(Handle)
Point(onEraseBkgnd)
link(onEraseBkgnd,7404208:doDeferredEvent,[(564,139)(564,173)(478,173)(478,188)])
}
Add(RGN_OutlinePicture,1517098,581,182)
{
Transparent=16711935
Point(doPicture)
Point(doClear)
link(onOutlinePicture,4747140:doSetRegion,[])
}
Add(ScreenShort,14713675,532,182)
{
link(onCapture,1517098:doPicture,[(569,188)(569,195)])
link(Handle,11428904:Var2,[])
}
Add(RGN_SetToWindow,4747140,630,182)
{
link(Handle,11428904:Var3,[(636,166)])
}
Add(GetDataEx,11428904,532,161)
{
link(Data,9698148:Handle,[])
}
Add(DeferredEvent,7404208,490,182)
{
link(onDeferredEvent,14713675:doCapture,[])
}
Add(Edit,6037209,455,119)
{
Left=260
Top=115
link(onChange,9743856:doEvent1,[])
}
Add(Hub,9743856,497,119)
{
link(onEvent1,4747140:doReset,[(621,125)(621,202)])
link(onEvent2,9698148:doText,[])
}
И ещё важный момент. Такой вариант подойдёт если не нужно отрабатывать нажатие курсором.

Редактировалось 1 раз(а), последний 2025-02-25 15:13:59
карма: 11

0
Разработчик
Ответов: 26223
Рейтинг: 2139
#9: 2025-02-25 15:15:57 ЛС | профиль | цитата
А если сделать так, то никакие танцы с бубном не нужны

Схема

Add(MainForm,2757395,532,294)
{
Point(onPaint)
Point(Width)
Point(Height)
}
Add(ChildForm,2004056,588,343)
{
}
BEGIN_SDK
Add(EditMulti,4519004,21,21)
{
WorkCount=1
Height=312
link(doWork1,4647957:doVisible,[(56,27)(56,97)])
}
Add(MainForm,4647957,91,63)
{
Left=35
Top=105
Visible=1
Point(Width)
Point(Height)
Point(doVisible)
Point(onPaint)
link(onPaint,6641244:doDraw,[(130,90)(130,216)(67,216)(67,181)])
}
Add(Img_Gradient,6641244,77,175)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,5568008:Point,[])
}
Add(PointXY,5568008,91,126)
{
link(X,4647957:Width,[])
link(Y,4647957:Height,[])
}
END_SDK
Add(ChildPanel,11997603,532,343)
{
link(onEvent1,2004056:doWork1,[])
}
BEGIN_SDK
Add(EditMulti,12389272,21,21)
{
EventCount=1
}
Add(Panel,12893671,70,56)
{
Width=384
Height=261
Align=5
BorderWidth=0
BevelWidth=0
BevelInner=0
Point(Width)
Point(Height)
Point(onPaint)
link(onPaint,7145275:doDraw,[(109,69)(109,48)(46,48)(46,160)])
}
Add(Label,9698148,167,50)
{
Left=275
Top=190
Transparent=0
}
Add(Img_Gradient,7145275,56,154)
{
Point2AsOffset=0
DrawSource=2
LineStyle=1
GradientStyle=1
Frame=1
StartColor=-16777192
EndColor=16761414
Point(Point1)
Point(Point2)
link(Point2,14663649:Point,[])
}
Add(PointXY,14663649,70,105)
{
link(X,12893671:Width,[])
link(Y,12893671:Height,[])
}
Add(Button,7939524,161,133)
{
Left=130
Top=130
Data=Integer(1)
link(onClick,12389272:onEvent1,[(207,139)(207,27)])
}
END_SDK


Редактировалось 1 раз(а), последний 2025-02-25 15:16:10
карма: 22

1
Голосовали:strannik_nebes
Ответов: 147
Рейтинг: 3
#10: 2025-02-28 08:48:52 ЛС | профиль | цитата
nesco Спасибо за помощь, лучше чем ничего. Подобное решение видел где-то с aero.

P.S: Все-таки смог отправить здесь сообщение. Баг возникает периодически. Кэш чистить что-ли

Редактировалось 1 раз(а), последний 2025-02-28 08:50:04
карма: 1

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