powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Рисование на форме/или объекте picture
38 сообщений из 38, показаны все 2 страниц
Рисование на форме/или объекте picture
    #32859999
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ!
Может просто уже вечер или еще чего...
Но вот что-то никак не могу понять, как мне нарисовать прямоугольник на форме в PowerBuilder 7. Может кто подскажет?

Откуда ноги растут: есть картинка, на которой заданы координаты прозрачных четырехугольников. Нужно их на этой картинке отобразить. Как бы это сделать? Я думал попробовать с line поработать, но чего-то не сростается...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860000
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще то РВ имеет т.н. Rectangle control...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860002
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... но как его сделать прозрачным???

И еще - как его динамически сгенерить? А еще у меня не получается открыть не-dragObject.. По крайней мере при помощи OpenUserObject. Или как нужно create-ить line или rectangle?
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860018
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rectangle control не есть dragobject, посему открыть его с помощью OpenUserObject не выйдет.
Надо делать custom visual userobject на котором в пайнтере засунут Rectangle...
По большому счёту если надо динамически, то всё это глупости и рисовать надо в datawindow controlе...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860559
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ммммммммм... А зачем мне на dataWindow вообще рисовать??? У меня на форме ни одного DW нету!!! Есть Picture, в котором картинка... На этой картинке - объекты, описанные в БД. И мне нужно вокруг этих объектов выводить разноцветные рамки (цвет зависит от состояния объекта).
Так что Rectangle мне не подойдет если у него нет свойства прозрачности... Думал рисовать линии - но в Painter'e они не хотели рисоваться поверх картинки (Bring To Top не помогало), а как это сделать в run-time чего-то никак сообразить не могу...

или может есть еще какой способ?? Кто чего может предложить???
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860689
__Guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используйте statictext
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860759
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА зачем мне на dataWindow вообще рисовать???Потому что динамически создавать и изменять прямоугольники в datawindow проще и удобнее. и проблем с прозрачностью никаких.
что то вроде этого:
dw.Modify("create bitmap(.... x='1' y='1' height='300' width='500' filename='c:\file.bmp)'" )
dw.Modify("create rectangle(... x='123' y='123' height='123' width='123' brush.hatch='7' brush.color='0' pen.style='0' pen.width='4' pen.color='0' background.mode='1' background.color='0')")
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860826
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__GuestИспользуйте statictext
А его можно сделать прозрачным??

ЗоринАндрей авторА зачем мне на dataWindow вообще рисовать???Потому что динамически создавать и изменять прямоугольники в datawindow проще и удобнее. и проблем с прозрачностью никаких.


Да, это конечно может и хорошо и удобно - но у меня есть файл с картинкой на локальном компутере, есть объект Picture, в котором этот файл выводится...
Наворочено уже обработчиков всяких... Просто неожиданно новый заказчик захотел в старую задачу навернуть новые возможности - не переделывать же накопленное с нуля??
Как-то не хочется переходить от picture куда-то еще...

Есть ли другие предложения??
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860968
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__GuestИспользуйте statictext Vadim RomanenkoА его можно сделать прозрачным??как правило - нет.
когда-то видел фокус - в конструкторе ставится backColor = 2^29
в событии pbm_paint передергивается visible = False/True
но все равно как-то глючно оно отрисовывало статик.

Vadim RomanenkoКак-то не хочется переходить от picture куда-то еще...
ну тогда это карма.

Есть еще вариант для сильных духом
Отмапить pbm_paint и рисовать самостоятельно с помощью WinAPI.

Create a device context for window
Invalidate the rectangle you intend to paint (must do this or you cannot
paint)
Allocate any brushes or pens you intend to use
Select into the device context the brush/pen
Do the painting within the invalidated area
Select the original (brush/pen) back into the device context
Validate the rectangle ( or you will get recursive wm_paint messages)
Release brushes and pens
Release the device context

Handle, GetDC, InvalidateRgn, ValidateRgn, ReleaseDC, приключения с перерисовкой при минимизации/восстановлении, WM_NCPAINT, WM_ERASEBKGND ...
ну как? уже страшно?

ИМХО путь к дальнейшему ухудшению кармы.
Когда устанете это дело отлаживать - возвращайтесь к идее с datawindow
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860994
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Прозрачный четырехугольник можно изобразить комбинацией 4-х непрозрачных четырехугольников.
2. На крайний случай, в качестве прозрачного четырехугольника, можно использовать окно с дыркой посередине.
Прямоугольник с дыркой посередине нудно поместить на картинки или вокруг картинки? Во втором случае можно обойтись без дырки.
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32860996
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko ЗоринАндрей авторА зачем мне на dataWindow вообще рисовать???Потому что динамически создавать и изменять прямоугольники в datawindow проще и удобнее. и проблем с прозрачностью никаких.


Да, это конечно может и хорошо и удобно - но у меня есть файл с картинкой на локальном компутере, есть объект Picture, в котором этот файл выводится...
Наворочено уже обработчиков всяких... Просто неожиданно новый заказчик захотел в старую задачу навернуть новые возможности - не переделывать же накопленное с нуля??Переделать userobject методом Copy&Paste на другой в данном конкретном случае, IMHO, быстрее и проще, чем использовать "другие предложения"


Vadim RomanenkoЕсть ли другие предложения??Есть конечно :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
	// Получить контекст устройства, 
	// установить и выбрать атрибуты рисунка, 
	// создать и выбрать графические объекты - перо, кисть и т.д.
	// освободить и уничтожить объекты
	Function Long GetDC (Long al_hwnd ) Library "user32.dll" 
	Function Long ReleaseDC (Long al_hwnd , Long al_hdc) Library "user32.dll"
	
	Function Long CreatePen (Long nPenStyle , Long nWidth , Long crColor ) Library "gdi32.dll" 
	
	Function Long SetBkColor  (Long al_hdc, Long al_crColor ) Library "gdi32.dll" 
	Function Long GetBkColor (Long al_hdc) Library "gdi32.dll" 
	
	Function Long SetArcDirection (Long al_hdc, Long al_ArcDirection ) Library "gdi32.dll" 
	Function Long GetArcDirection (Long al_hdc) Library "gdi32.dll" 
	
	Function Long SetBkMode (Long al_hdc, Long al_nBkMode ) Library "gdi32.dll" 
	Function Long GetBkMode (Long al_hdc) Library "gdi32.dll" 
	
	Function Long SetBrushOrgEx (Long al_hdc, Long al_nXOrg , Long al_nYOrg , str_size lppt ) Library "gdi32.dll" 
	Function Long GetBrushOrgEx (Long al_hdc,  str_size lpPoint ) Library "gdi32.dll" 
	
	Function Long SetMapMode (Long al_hdc, Long al_nMapMode ) Library "gdi32.dll" 
	Function Long GetMapMode (Long al_hdc) Library "gdi32.dll" 
	
	Function Long SetROP2 (Long al_hdc, Long al_nDrawMode ) Library "gdi32.dll" 
	Function Long GetROP2 (Long al_hdc) Library "gdi32.dll" 
	
	Function Long SetPolyFillMode (Long al_hdc, Long al_nPolyFillMode ) Library "gdi32.dll" 
	Function Long GetPolyFillMode (Long al_hdc) Library "gdi32.dll" 
	
	Function Long SetViewportExtEx (Long al_hdc, Long al_nX, Long al_nY, str_size lpSize ) Library "gdi32.dll" 
	Function Long GetViewportExtEx (Long al_hdc, str_size lpSize) Library "gdi32.dll" 
	
	Function Long SetViewportOrgEx (Long al_hdc, Long al_nX, Long al_nY, str_size lpPoint ) Library "gdi32.dll" 
	Function Long GetViewportOrgEx (Long al_hdc, str_size lpPoint ) Library "gdi32.dll" 
	
	Function Long SetWindowExtEx (Long al_hdc, Long al_nX, Long al_nY, str_size lpSize ) Library "gdi32.dll" 
	Function Long GetWindowExtEx (Long al_hdc, str_size lpSize ) Library "gdi32.dll" 
	
	Function Long SetWindowOrgEx (Long al_hdc, Long al_nX, Long al_nY, str_size lpPoint ) Library "gdi32.dll" 
	Function Long GetWindowOrgEx (Long al_hdc, str_size lpPoint ) Library "gdi32.dll" 
	
	Function Long GetStockObject  (Long nIndex ) Library "gdi32.dll"  
	Function Long SelectObject (Long al_hdc, Long hObject) Library "gdi32.dll"  
	Function Long DeleteObject (Long hObject) Library "gdi32.dll"  
	
	// Lines
	Function BOOLEAN LineTo (Long al_hdc, Long al_x , Long al_y ) Library "gdi32.dll" 
	Function BOOLEAN MoveToEx (Long al_hdc, Long al_x , Long al_y, REF str_size lpPoint ) Library "gdi32.dll" 
Не лень этим заниматься?
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861001
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрей...
ИМХО путь к дальнейшему ухудшению кармы.
Когда устанете это дело отлаживать - возвращайтесь к идее с datawindow Отлично сказано :-)))
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861012
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УЖЖЖЖЖЖЖЖЖАСССССССССС!!!!!!!!!!!
Неужели я через пару лет работы с билдером буду вынужден понять, что это какая-то недоделка??? Ну где это видано, чтоб поверх картинки нельзя было нарисовать, на крайняк с-create'ить объект-линию???

Насчет фокуса со StaticText'ом - нужно было сделать выделение области, присобачили SingleLineEdit и по таймеру в случае, если что-то выделяли -
if b then
sle_1.visible=not(sle_1.visible)
end if;

Насчет идей - у меня уже есть несколько... Например генерить объект Picture с прозрачным GIFом нужного размера (просто растягивать прозрачный гиф) и границы выделять... Или копировать область картинки большой на маленький объект Picture и выводить поверх уже с рамкой...

Но все перелопачивать и менять идеологию вообще из-за того, что вроде как нельзя динамически нарисовать линию поверх другого объекта... ИМХО жуть/ужас/бред!! Ну как такое могет быть??? Не хочу в такое верить :(
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861039
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк1. Прозрачный четырехугольник можно изобразить комбинацией 4-х непрозрачных четырехугольников.

Как динамически нарисовать четырехугольник?? Я согласен составить четырехугольник даже из четырех линий :) Только как это сделать динамически???

Локшин Марк
2. На крайний случай, в качестве прозрачного четырехугольника, можно использовать окно с дыркой посередине.
Прямоугольник с дыркой посередине нудно поместить на картинки или вокруг картинки? Во втором случае можно обойтись без дырки.
А как это - с дыркой посередине???
Мне нужно на одной картинке забабахать кучу "окантовок" для нарисованных объектов...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861058
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoУЖЖЖЖЖЖЖЖЖАСССССССССС!!!!!!!!!!!
Неужели я через пару лет работы с билдером буду вынужден понять, что это какая-то недоделка??? Ну где это видано, чтоб поверх картинки нельзя было нарисовать, на крайняк с-create'ить объект-линию???Гм... Два года - не срок :-)). Все можно сделать, вопрос только в ресурсах.

Vadim RomanenkoНо все перелопачивать и менять идеологию вообще из-за того, что вроде как нельзя динамически нарисовать линию поверх другого объекта... ИМХО жуть/ужас/бред!! Ну как такое могет быть??? Не хочу в такое верить :(Менять "идеологию вообще" вам предлагают из-за того, что изначально была непродумана архитектура приложения.
Hint: сервисы, сервисы, сервисы...
Если, конечно, еще не поздно.
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861061
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например генерить объект Picture с прозрачным GIFом нужного размеране получится.
Но все перелопачивать и менять идеологиюну вот значит изначально идеология была ошибочна. ничего, с кем не бывает...

ИМХО жуть/ужас/бред!! Ну как такое могет быть??? Не хочу в такое верить :(А-тставить истерику!
я знал человека который еще под ДОС писал драйвер для "нестандартного" устройства на Клиппере. самое смешное что он его таки написал. еще смешнее что он таки работал, но так меееееедлеееееенннннооооо.
билдеру - билдерово.
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861064
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoКак динамически нарисовать четырехугольник?? Я согласен составить четырехугольник даже из четырех линий :) Только как это сделать динамически???
Ну так Филипп уже сказал - сделать custom visual user object, в который засунуть ractangle. На форме динамичеки размещаем 4 оюъекта данного типа, подобрав координаты. Размер ractangle внутри объекта должен быть равен размеру объекта.
Vadim RomanenkoА как это - с дыркой посередине???
Мне нужно на одной картинке забабахать кучу "окантовок" для нарисованных объектов...
WinAPI функция SetWindowRgn(...) и около нее. Недавно на форуме обсуждалось.
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861088
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99 Vadim RomanenkoУЖЖЖЖЖЖЖЖЖАСССССССССС!!!!!!!!!!!
Неужели я через пару лет работы с билдером буду вынужден понять, что это какая-то недоделка??? Ну где это видано, чтоб поверх картинки нельзя было нарисовать, на крайняк с-create'ить объект-линию???Гм... Два года - не срок :-)). Все можно сделать, вопрос только в ресурсах.

Согласен. И со сроком, и с ресурсами. Но я вообще-то имел в виду, что недоделка - это Билдер ;) Не могу назвать ни одного нормального языка, в котором нельзя было бы скреатить один объект поверх другого динамически...

PL99 Vadim RomanenkoНо все перелопачивать и менять идеологию вообще из-за того, что вроде как нельзя динамически нарисовать линию поверх другого объекта... Менять "идеологию вообще" вам предлагают из-за того, что изначально была непродумана архитектура приложения.
Hint: сервисы, сервисы, сервисы...
Если, конечно, еще не поздно.
Мммммм... А при чем тут сервисы-сервисы-сервисы???

ПС: Предложение Локшина Марка мне в любом случае нравится куда больше, чем все эти излияния с WinAPI и переходом на DataWindow - по-моему это слишком сложное решение...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861102
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрей Например генерить объект Picture с прозрачным GIFом нужного размеране получится.

А почему же не получится?? Создать динамически Picture не выйдет???


ЗоринАндрей ИМХО жуть/ужас/бред!! Ну как такое могет быть??? Не хочу в такое верить :(А-тставить истерику!
я знал человека который еще под ДОС писал драйвер для "нестандартного" устройства на Клиппере. самое смешное что он его таки написал. еще смешнее что он таки работал, но так меееееедлеееееенннннооооо.
билдеру - билдерово.
Ну да, в очередной раз убеждаюсь - в билдере лучше пользоваться только DataWindow... Для рисования он не предназначен :(
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861795
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoНе могу назвать ни одного нормального языка, в котором нельзя было бы скреатить один объект поверх другого динамически...
А кто вам мешает динамически создавать любые Windowed-объекты функцией CreateUserObject? Вы же задали вопрос про прямоугольник и Филлип вам на него ответил. То, что другие языки имеют в поставке обертки соответствующих API, говорит только о том, что это более низкоуровневые и, следовательно, универсальные средства.
ЗоринАндрейбилдеру - билдерово :-)

Vadim RomanenkoМммммм... А при чем тут сервисы-сервисы-сервисы???Именно в них должны были бы быть закодированы реакции на события, о которых вы упомянули. В визуальных объектах - только вызовы функций соответствующих сервисов. В этом случае вас не испугали бы предложения обратиться к Windows API.
Кстати, вы как думаете, приведенный мной несколькими постами выше кусок кода с объявлениями функций просто так появился на свет?
Он позволял неплохо рисовать :-))
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861817
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99 Vadim RomanenkoНе могу назвать ни одного нормального языка, в котором нельзя было бы скреатить один объект поверх другого динамически...
А кто вам мешает динамически создавать любые Windowed-объекты функцией CreateUserObject? Вы же задали вопрос про прямоугольник и Филлип вам на него ответил.

Дело в том, что даже в Паинтере у меня не получилось создать объект Line поверх объекта Picture... Почему-то он постоянно размещался на Back от Picture. И никак не хотел тащиться на верх. Потому и задал вопрос - как его создать динамически, чтоб попробовать это сделать в рантайме. Но так никто и не ответил :( Сейчас пытаюсь пойти по пути, предложенному Локшиным Марком... Но все время начальство отвлекает - никак не доберусь до конца :(

PL99 Vadim RomanenkoМммммм... А при чем тут сервисы-сервисы-сервисы???Именно в них должны были бы быть закодированы реакции на события, о которых вы упомянули. В визуальных объектах - только вызовы функций соответствующих сервисов. В этом случае вас не испугали бы предложения обратиться к Windows API.
Кстати, вы как думаете, приведенный мной несколькими постами выше кусок кода с объявлениями функций просто так появился на свет?
Он позволял неплохо рисовать :-))
Насчет вашего куска - я так думаю, это и есть кусок объявления функций из WinAPI? Дело в том, что я, к своему стыду, соввершенно не знаком с WinAPI и его применением в PB... Потому наверное и не понял, что такое сервисы-сервисы-сервисы :(

Спасибо за помощь! Как допытаюсь - сообщу, получилось ли чего-то, и как
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32861912
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот statictext с прозрачнім фоном - то что Вам нужно
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862032
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример рисования с помощью datawindow...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862033
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мммм... А не могли бы вы подсказать, как мне самому сделать такой StaticText с прозрачным фоном???
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862041
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roleksВот statictext с прозрачнім фоном - то что Вам нужно

Большое спасибо! А то я уже начал извращаться с UO, у которого заливка черная, 4 штуки на 1 прямоугольник... Неудобно - просто жуть!

ПС: По поводу объяснить, как - я имел в виду, откудова такая идея :) Принцип что-ли... А то мало ли - когда еще понадобится прозрачность где-то сделать...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862046
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппПример рисования с помощью datawindow...

Я попробовал из интереса посмотреть - но у меня не получается открыть проект... У меня версия PB - 7.0.3. У вас наверное другой? Более страший?

Спасибо за помощь в любом случае!!
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862054
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати! Не знаю, чем пользуется народ в форуме для удобного просмотра структуры проектов, поиска и анализа наследования, но вот например у меня есть замечательный PBBrowser. И в нем открываются ко всему еще и проекты разных версий Билдера.
Например, там я увидел исходники того, что выложил на форуме Филипп. Очень рекомендую средство :)
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862061
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoКстати! Не знаю, чем пользуется народ в форуме для удобного просмотра структуры проектов, поиска и анализа наследования, но вот например у меня есть замечательный PBBrowser. И в нем открываются ко всему еще и проекты разных версий Билдера.
Например, там я увидел исходники того, что выложил на форуме Филипп. Очень рекомендую средство :)
Я лично пользуюсь старой (бесплатной) версией YBrowser, к сожалению с РВ10 он (как и большинство других аналогичных продуктов) не работает.

То, что я выложил было в РВ9 (что должно быть очевидно из названия архива)...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862099
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoКстати! Не знаю, чем пользуется народ в форуме для удобного просмотра структуры проектов, поиска и анализа наследования
Object Browser'ом ...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862232
Астралопитек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с похожей ситуацией. От меня долбоскрёбы-юзвери надысь потребовали, чтобы в одном давнем проекте у AnalogClock фон стал градиентным. Сам объект есть в примерах к РВ. И там стрелочки часов рисуются лайнами. Так вот, оказалось, что действительно, как сообщает автор топика, LINE'y невозможно сказать ни в пэйнтере BringToFront, ни в скрипте SetPosition(totop!) -- он их типа просто не понимает. Эти изгаляции действуют только на объекты одного ранга: лайны, ректанглы, овалы и прочее. Пришлось мне рисовать градиент тоже лайнами. IMHO для рисования сабжей надо использовать объект того же уровня - picture. А уж как -- это дело художника и типа дизайнера. Есть туча всяких ФотоЗадниц и более простых пакетов, делающих эффекты и прочее.
------------------------------------------
Всякое доброе дело типа наказуемо.
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32862358
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот так делаются градиенты (если НЕ в datawindow)...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32863791
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспользовался способом, связанным с созданием StaticText с прозрачным фоном. Однако появился маленький баг: если какой-то объект отрисовывается поверх этого самого статикТекста (например, меню) то после исчезновения (меню) статикТекст перестает быть прозрачным :((
С чем это может быть связано???

Впринципе, проблема уходит при перерисовке окна (SetRedraw(False); SetRedraw(True)). Однако при этом жутко дергается изображение на форме... Если никак не избавиться от исчезновения прозрачности, то может кто-то подскажет - каким образом безболезненно перерисовать форму?
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32863972
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoВоспользовался способом, связанным с созданием StaticText с прозрачным фоном. Однако появился маленький баг: если какой-то объект отрисовывается поверх этого самого статикТекста (например, меню) то после исчезновения (меню) статикТекст перестает быть прозрачным :((
С чем это может быть связано???

Впринципе, проблема уходит при перерисовке окна (SetRedraw(False); SetRedraw(True)). Однако при этом жутко дергается изображение на форме... Если никак не избавиться от исчезновения прозрачности, то может кто-то подскажет - каким образом безболезненно перерисовать форму?

НЕ воспроизводится ваш баг (с менюшкой) - как был прозрачным, так и остается. Что то непральна делаете...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32864014
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мммм... А навскидку не можете предположить, что бы это могло быть??
Вот код для формирования объекта:
uo_staticTransparent iuo_static - instance variable

iw_parent.setRedraw(False)
iw_parent.openUserObject(iuo_static) //iw_parent - окно, на котором располагается iuo_static
iuo_static.border = True
iuo_static.text = ''

Вот код для размещения сформированного StaticText на окне (в event, динамически вызываемом из userObject'а обслуживающего StaticText):

of_obtainDynamicCoords(al_x, al_y, al_width, al_height) //Динамическое определение координат
setRedraw(False)
auo_static.x = al_x
auo_static.y = al_y
auo_static.width = al_width
auo_static.height = al_height
auo_static.BorderColor = al_color
setRedraw(True)
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32864057
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппНЕ воспроизводится ваш баг (с менюшкой) - как был прозрачным, так и остается. Что то непральна делаете...Вообще-то, такое поведение наблюдалось при аналогичных извращениях, реализованных в PB5 + Windows95 (вероятно с какими-то сервиспаками).
2 Vadim Romanenko: Меня терзают смутные сомненья... может, дело в сочетаниях OS + драйвер видеокарты? Баг воспроизводится стабильно?
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32864068
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, баг кажется появляется еще и тогда, когда просто щелкаешь мышкой по картинке. Но она у меня Enabled=False, то есть по всей видимости щелчок ловит таки форма.
Во-вторых я поставил перерисовку, которая хоть и мелькает, но баг стабильно исчез... Сейчас раскомментирую и скажу...

У меня ВинХР+Sapphire Radeon 9200 Atlantis
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32864079
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мммм... Таки да, косяк был у меня.

Что было:
setRedraw(True)
p_pic.setRedraw(True)

что стало:
p_pic.setRedraw(True)
setRedraw(True)

Интересно :(
И все же - вопрос о безболезненной (для глаз юзверя) перерисовке формы остается... Помнится, под ДОСами нужно было синхронизироваться с лучом... А тут такого нету?? чтоб перед перерисовкой чего-то подождать??
В голову из какого-то языка лезет WaitForRetrace...
...
Рейтинг: 0 / 0
Рисование на форме/или объекте picture
    #32864855
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А загляните сюда:
http://www.mycgiserver.com/~unoksoftgroup/

Может и поможет.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Рисование на форме/или объекте picture
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]