purebasic.info

PureBasic forum
Текущее время: Пн июн 01, 2020 1:00 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Канвас
СообщениеДобавлено: Пн фев 24, 2020 8:51 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1012
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Почему канвас не открывается если он в библиотеке dll,lib.? :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Пн фев 24, 2020 11:53 am 
Не в сети
студент

Зарегистрирован: Сб окт 13, 2018 9:54 pm
Сообщений: 3
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Процедура не знает где создавать канвас. Попробуй передать GadgetList (процедура UseGadgetList) и задействовать его перед создание канваса.

Например в библиотеке должно быть так:
Код:
1
2
3
4
5
6
7
8
ProcedureDLL CanvasGadget_(GadgetList, x, y, Width, Height, Flags)
  UseGadgetList(GadgetList)
  CanvasGadget(0, x, y, Width, Height, Flags)
  If StartDrawing(CanvasOutput(0))
    Box(x + 100, y + 100, Width - 200, Height - 200, RGB(255, 0, 0))
    StopDrawing()
  EndIf
EndProcedure


А при использовании процедуры так:
Код:
1
2
3
4
5
6
7
Import "Canvas.lib"
  CanvasGadget_(GadgetList, x, y, Width, Height, Flags)
EndImport
OpenWindow(0, 0, 0, 600, 400, "")
CanvasGadget_(UseGadgetList(WindowID(0)), 0, 0, 600, 400, #PB_Canvas_Border)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Пн фев 24, 2020 12:25 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1012
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Dryagin писал(а):
Процедура не знает где создавать канвас. Попробуй передать GadgetList (процедура UseGadgetList) и задействовать его перед создание канваса.

Например в библиотеке должно быть так:
Код:
1
2
3
4
5
6
7
8
ProcedureDLL CanvasGadget_(GadgetList, x, y, Width, Height, Flags)
  UseGadgetList(GadgetList)
  CanvasGadget(0, x, y, Width, Height, Flags)
  If StartDrawing(CanvasOutput(0))
    Box(x + 100, y + 100, Width - 200, Height - 200, RGB(255, 0, 0))
    StopDrawing()
  EndIf
EndProcedure


А при использовании процедуры так:
Код:
1
2
3
4
5
6
7
Import "Canvas.lib"
  CanvasGadget_(GadgetList, x, y, Width, Height, Flags)
EndImport
OpenWindow(0, 0, 0, 600, 400, "")
CanvasGadget_(UseGadgetList(WindowID(0)), 0, 0, 600, 400, #PB_Canvas_Border)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow


Да так открывается но неработает StartDrawing(CanvasOutput(0)),если не в библиотеке что теперь это ввиде обёртки или ещё как запихнуть в библиотеку? :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Пн фев 24, 2020 7:39 pm 
Не в сети
профессор

Зарегистрирован: Чт авг 05, 2010 2:36 pm
Сообщений: 482
Откуда: Донецк
Благодарил (а): 60 раз.
Поблагодарили: 12 раз.
Я для VST плагина тоже планировал использовать канвас, но в итоге пришлось забить на него болт, так как крашит хост.
И UseGadgetList непоможет.
Проще вызывать KontainerGadget и рисовать внутри него через WindowOutput().

_________________
PureBasic 5.70 X86/x64, HBasic v2x, Tinycc 0.97, Asus U46e Intel i7 2.7 ghz, 8 gb ddr3, Intel HD 3000, Windows XP SP3, Windows 10 x64, Nexus 4 and v5.1.1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Пн фев 24, 2020 8:59 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1012
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Apokalipsis писал(а):
Я для VST плагина тоже планировал использовать канвас, но в итоге пришлось забить на него болт, так как крашит хост.
И UseGadgetList непоможет.
Проще вызывать KontainerGadget и рисовать внутри него через WindowOutput().

Ну через обёртки рисует вроде бы. :roll:
PS:Непонятно зачем на операцию начала отрисовкиStartDrawing(CanvasOutput(id)) автор 2 функции сделал для вызова,?
Код:
1
2
3
4
5
6
7
8
 
ProcedureDLL.i StartCanvasDrawing(id)
  ProcedureReturn StartDrawing(CanvasOutput(id))
EndProcedure
ProcedureDLL StopCanvasDrawing()
 StopDrawing()
EndProcedure
 


Изобретаю надстройку для себя :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Вт фев 25, 2020 10:25 am 
Не в сети
профессор

Зарегистрирован: Чт авг 05, 2010 2:36 pm
Сообщений: 482
Откуда: Донецк
Благодарил (а): 60 раз.
Поблагодарили: 12 раз.
Сергейчик
А не проще запихнуть сразу в одну процедуру, типа:
Код:
1
2
3
4
5
 
StartDrawing(WindowOutput(hWndMain))
DrawText(20, 20, "my text")
StopDrawing()
 



Я так сделал и падения прекратились. У меня вообще подозрение что с канвасом куча проблем, по крайней мере периодически вижу багрепорты на оффоруме.

_________________
PureBasic 5.70 X86/x64, HBasic v2x, Tinycc 0.97, Asus U46e Intel i7 2.7 ghz, 8 gb ddr3, Intel HD 3000, Windows XP SP3, Windows 10 x64, Nexus 4 and v5.1.1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Вт фев 25, 2020 5:58 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1012
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Apokalipsis писал(а):
Сергейчик
А не проще запихнуть сразу в одну процедуру, типа:
Код:
1
2
3
4
5
 
StartDrawing(WindowOutput(hWndMain))
DrawText(20, 20, "my text")
StopDrawing()
 



Я так сделал и падения прекратились. У меня вообще подозрение что с канвасом куча проблем, по крайней мере периодически вижу багрепорты на оффоруме.

Нет не проще так как я для рисования планирую апи функции и зачем мне обёртки?
Я уже понял что достаточно вместо StartDrawing тупо взять контекст окна :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Ср фев 26, 2020 3:25 am 
Не в сети
профессор

Зарегистрирован: Чт авг 05, 2010 2:36 pm
Сообщений: 482
Откуда: Донецк
Благодарил (а): 60 раз.
Поблагодарили: 12 раз.
Сергейчик, у меня было наоборот, сначала писал все как знаю и понимаю на WinApi, потом уже перепилил на стандартных гаджетах и функциях пурика.
Ибо юзать в пурике msvcrt через importc еще тот гемор...

_________________
PureBasic 5.70 X86/x64, HBasic v2x, Tinycc 0.97, Asus U46e Intel i7 2.7 ghz, 8 gb ddr3, Intel HD 3000, Windows XP SP3, Windows 10 x64, Nexus 4 and v5.1.1.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Канвас
СообщениеДобавлено: Ср фев 26, 2020 8:26 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 1012
Благодарил (а): 2 раз.
Поблагодарили: 58 раз.
Пункты репутации: 9
Apokalipsis писал(а):
Сергейчик, у меня было наоборот, сначала писал все как знаю и понимаю на WinApi, потом уже перепилил на стандартных гаджетах и функциях пурика.
Ибо юзать в пурике msvcrt через importc еще тот гемор...

В чём гемор и причём тут msvcrt?
У меня будет свой канвас лесяпед..... :D


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB