А можно как то понятнее задать вопрос? Куда вывести картнки - в rtf? из Rtf на диск? Просто куда и откуда?
У меня есть несколько картинок, которые надо вывести в окно. Лучше из rtf, но в принципе не важно.
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)
А можно как то понятнее задать вопрос? Куда вывести картнки - в rtf? из Rtf на диск? Просто куда и откуда?
У меня есть несколько картинок, которые надо вывести в окно. Лучше из rtf, но в принципе не важно.
несколько картинок, которые надо вывести в окно
А в чем трудность то?
Пример из Helpa
; для разных форматов UseJPEGImageDecoder() UseJPEG2000ImageDecoder() UsePNGImageDecoder() UseTIFFImageDecoder() UseTGAImageDecoder() If OpenWindow(0, 0, 0, 245, 105, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) If LoadImage(0, "Твой рисунок.bmp") ; change 2nd parameter to the path/filename of your image ImageGadget(0, 10, 10, 100, 83, ImageID(0)) ; imagegadget standard ImageGadget(1, 130, 10, 100, 83, ImageID(0), #PB_Image_Border) ; imagegadget with border EndIf Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf
Как вытащить картинку из Rtf не знаю. Проще всего скопировать её, вставить в редактор картинок и сохранить на диск.
А в чем трудность то?
Пример из Helpa
А как вставить несколько сразу? То есть один за другим с прокруткой.
Отредактировано max (10.01.2011 21:26:49)
For x=0 To 198
color=RGB(255, 255-(198-x), 0)
For t=0 To z
Plot(Sin(x*ToRad)*50+30+(z/2+t),x,color)
Next t
ToRad-0.00004
z+0.4
Next x
Не совсем понятен такой момент,- шаг в цикле For-Next минимум =1. В примере, значение z увеличивается на дробное значение (+0.4). Как при этом работает цикл? В качестве значение Z, при достижении которого цикл прекращает работу, берется целая часть Z, или я что-то упустил??? Раньше думал, что значение <expression2> (в данном случае Z) может быть только целым числом…???
берется целая часть Z
Да, именно так.
Раньше думал, что значение <expression2> (в данном случае Z) может быть только целым числом…???
Да оно может быть только целым числом, поэтому автоматически переводится в целое и округляется.
У меня есть несколько картинок, которые надо вывести в окно. Лучше из rtf, но в принципе не важно.
Можно создать HTML документ со встроенными картинками.
Можно создать HTML
Спасибо! Буду пробовать.
А где можно почитать, как сделать HTML документ?
Заранее спасибо!
Отредактировано max (10.01.2011 22:43:30)
В HTML редакторе, скажем в Nvu.
В крайнем случае, Ворд умеет сохранять в формате HTML.
Ребят, а как установить курсор мышки в определённое место внутри окна?
Из примеров, подходит функция SetCursorPos_(MouseX, MouseY), но она устанавливает положение курсора на экране. Пока делаю так: SetCursorPos_( WindowX((#Window)+нужное значениеX, WindowY((#Window)+нужное значение Y). Это единственный вариант, или есть функция установки курсора непосредственно для окна???
И еще, можно ли как-то превратить курсор мыши в нужную мне фигурку, например в шарик(R=5 пикселей) с круговым градиентом из центра???
В принципе как просто погасить курсор я нашел,- ShowCursor_( FALSE).Так работает.
А вот как форму курсора поменять не пойму. wc.hCursor = LoadCursor(NULL, IDC_CROSS)
SetCursor _(wc.hCursor)
Не пойму, что за тип имеет идентификатор «wc» и что за структура «hCursor»??? Даже при значение SetCursor_(NULL) курсор почему-то не исчезает с экрана , как обещено… ???
Отредактировано Lucagin (11.01.2011 04:10:25)
Это единственный вариант, или есть функция установки курсора непосредственно для окна???
В принципе правильно, и твой вариант не хуже других. Можно ещё координаты окна определять при помощи GetWindowRect, но все равно SetCursorPos - это единственное , что у нас есть из API.
И еще, можно ли как-то превратить курсор мыши в нужную мне фигурку, например в шарик(R=5 пикселей) с круговым градиентом из центра???
А вот как форму курсора поменять не пойму. wc.hCursor = LoadCursor(NULL, IDC_CROSS)
SetCursor _(wc.hCursor)
Можно любой курсор установить, какой нарисуешь. Можно грузить из файла или из ресурсов. Вот тут есть пример как это сделать:
http://pbasic.spb.ru/phpBB2/viewtopic.php?t=388
И поосторожней с константами типа #False и #True ( к стати, так они правильно пишутся) - в Пурике это 0 и 1 , но в API это могут быть другие числа, -1 к примеру, так что вначале надо проверять их истинное значение.
Да оно может быть только целым числом, поэтому автоматически переводится в целое и округляется.
Спасибо, Пётр!!! Это существенный нюанс, может где-то пригодиться...
Можно любой курсор установить, какой нарисуешь. Можно грузить из файла или из ресурсов. Вот тут есть пример как это сделать:http://pbasic.spb.ru/phpBB2/viewtopic.php?t=388 И поосторожней с константами типа #False и #True ( к стати, так они правильно пишутся) - в Пурике это 0 и 1 , но в API это могут быть другие числа, -1 к примеру, так что вначале надо проверять их истинное значение.
Спасибо!!!
Буду пробовать...
Отредактировано Lucagin (11.01.2011 16:45:41)
В HTML редакторе, скажем в Nvu.В крайнем случае, Ворд умеет сохранять в формате HTML.
Спасибо!
Всем привет!
Возможно я туплю, но у меня упорно не хотят выводиться картинки. HTML сделан в Nvu. Подскажите, что не так? Код прилагается.
Код
Заранее спасибо!
Отредактировано max (11.01.2011 21:10:54)
В файле 345.html путь к картинке для отображения у каждого по идее будет уникален, у меня такой:
src="file://localhost/C:\Documents and Settings\Олег\Рабочий стол\Новая папка\PureBasicLogo.png" - работает
путь к картинке для отображения у каждого по идее будет уникален
А можно сделать так, чтобы путь к картинке был как у папки, в которой она находится?
Ребята, помогите понять причину ошибки???
В программе, надо шарик провести снизу до верха экрана по нарисованной траектории…
Всё вроде работает корректно, за исключением одной проблемы. Если курсор мыши опустить ниже окна, то программа завершает работу со значением координаты Y=-1. Как оказалось, что внизу окна, координата Y не 600 (по ширине окна), а -1??? Причем в каких-то точках эта ошибка вылезает, а в каких-то нет. Debug(y) выводит значение Y, при котором программа завершает работу (строка 91)…
Можно конечно сделать через координаты экрана, но хочется понять, откуда растут ноги у этой ошибки…
Global X_s, Y_s Procedure Windows() If OpenWindow(0, 0, 0, 800, 600, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) CreateImage(0, 1000, 1000) ImageGadget(0, 0, 0, 800, 600, ImageID(0)) If CreateMenu(0, WindowID(0)) MenuItem(1,"Старт") MenuItem(2,"Выход") EndIf EndIf EndProcedure Procedure Zigzag() V=Random(30) While V<20 V=Random(50) Wend ToRad.d = 1/V R=Random(250) While r<50 R=Random(250) Wend If StartDrawing(ImageOutput(0)) Box(0,0,800,600,RGB(0,0,0)) z.f=100 For x=0 To 600 color=RGB(255, 0, 0) For t=0 To z Plot(Sin(x*ToRad)*R+200+(z/2+t),x,color) Next t ToRad-0.00004 z+0.4 Next x DrawingMode(#PB_2DDrawing_Gradient) BackColor($00FFFF) FrontColor($FF0000) x=200+400 While Point(x+20, 600-25)<>RGB(255,0,0) x-5 Wend X_s=x Y_s=600-25 SetCursorPos_(WindowX(0)+X_s, WindowY(0)+20+Y_s) CircularGradient(X_s, Y_s, 5) Circle(X_s, Y_s, 5) ;Debug X_s ;Debug Y_s StopDrawing() SetGadgetState(0,ImageID(0)) EndIf ;SetCursorPos_(WindowX(0)+X_s, WindowY(0)+Y_s) ;wc.hCursor=LoadCursor_(NULL, IDC_SIZE ) ;SetCursor_(NULL) ShowCursor_(FALSE) EndProcedure Windows() Repeat Event=WaitWindowEvent(100) Menu=EventMenu() If event=#PB_Event_Menu If Menu=1 Start=ElapsedMilliseconds() d=0 Zigzag() ;{ Вложенный цикл Repeat Kor_X=WindowMouseX(0) Kor_Y=WindowMouseY(0) If WindowMouseX(0) <>Kor_X Or WindowMouseY(0)<>Kor_Y Kor_X=WindowMouseX(0) Kor_Y=WindowMouseY(0) ;If Kor_Y>600-10 ;or_Y=600-10 ;EndIf StartDrawing(ImageOutput(0)) Circle(X_s, Y_s, 5,RGB(255,0,0)) DrawingMode(#PB_2DDrawing_Gradient) X_s=Kor_X Y_s=Kor_Y If Y_s<=5 DrawingMode(#PB_2DDrawing_Default ) Box(0,0,800,600,RGB(0,0,0)) StopDrawing() SetGadgetState(0,ImageID(0)) Debug Y_s ShowCursor_(-1) temp.f=(ElapsedMilliseconds()-start)/1000 MessageRequester("Информация!", "Задание выполнено! Затраченное время: "+Left(StrF(temp),5)+ " сек.", #MB_OK|#MB_ICONINFORMATION) Break EndIf BackColor($00FFFF) FrontColor($FF0000) For a=0 To 360 Step 15 Cvet=Point(Cos(a*#PI/180)*5+Kor_X, Sin(a*#PI/180)*5+Kor_Y) If Cvet=RGB(0,0,0) DrawingMode(#PB_2DDrawing_Default ) Box(0,0,800,600,RGB(0,0,0)) StopDrawing() SetGadgetState(0,ImageID(0)) ;Debug Y_s ;Debug Cvet ShowCursor_(-1) temp=ElapsedMilliseconds()-start MessageRequester("Ошибка!", "Задание провалено, касание в точке с координатами:X= "+Str(Cos(a*#PI/180)*5+Kor_X)+" y= " +Str(Sin(a*#PI/180)*5+Kor_Y), #MB_OK|#MB_ICONQUESTION) Goto k EndIf Next a CircularGradient(X_s, Y_s, 5) Circle(X_s, Y_s, 5) StopDrawing() SetGadgetState(0,ImageID(0)) EndIf Until d=1 ;} ElseIf menu=2 End EndIf EndIf k: Until Event = #PB_Event_CloseWindow
Отредактировано Lucagin (11.01.2011 22:09:06)
Как вариант, все загружаем в EXE файл, а при запуске создаём html и картинку в временной директории...
Проблема, если много файлов...
Возможно есть вариант по лучше.
patc1.s= GetTemporaryDirectory()+"PureBasicLogo.png" patc2.s= GetTemporaryDirectory()+"345.html" ;абсолютный путь If CreateFile(1,patc1.s) WriteData(1,?Im0, ?Im0End-?Im0) CloseFile(1) EndIf If CreateFile(2,patc2.s) WriteData(2,?ch1, ?ch1End-?ch1) CloseFile(2) EndIf If OpenWindow(0, 0, 0, 800, 500, "WebGadget", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered) WebGadget(1, 10, 10, 780, 480, patc2.s) Repeat Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf DataSection Im0: IncludeBinary "PureBasicLogo.png" Im0End: ch1: IncludeBinary "345.html" ch1End: EndDataSection
Ребята, помогите понять причину ошибки???
Ошибка в том, что Point не правильно присваиваются координаты. Ввел дополнительные условия.
Global X_s, Y_s Procedure Windows() If OpenWindow(0, 0, 0, 800, 600, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) CreateImage(0, 1000, 1000) ImageGadget(0, 0, 0, 800, 600, ImageID(0)) If CreateMenu(0, WindowID(0)) MenuItem(1,"Старт") MenuItem(2,"Выход") EndIf EndIf EndProcedure Procedure Zigzag() V=Random(30) While V<20 V=Random(50) Wend ToRad.d = 1/V R=Random(250) While r<50 R=Random(250) Wend If StartDrawing(ImageOutput(0)) Box(0,0,800,600,RGB(0,0,0)) z.f=100 For x=0 To 600 color=RGB(255, 0, 0) For t=0 To z Plot(Sin(x*ToRad)*R+200+(z/2+t),x,color) Next t ToRad-0.00004 z+0.4 Next x DrawingMode(#PB_2DDrawing_Gradient) BackColor($00FFFF) FrontColor($FF0000) x=200+400 While Point(x+20, 600-25)<>RGB(255,0,0) x-5 Wend X_s=x Y_s=600-25 SetCursorPos_(WindowX(0)+X_s, WindowY(0)+20+Y_s) CircularGradient(X_s, Y_s, 5) Circle(X_s, Y_s, 5) ;Debug X_s ;Debug Y_s StopDrawing() SetGadgetState(0,ImageID(0)) EndIf ;SetCursorPos_(WindowX(0)+X_s, WindowY(0)+Y_s) ;wc.hCursor=LoadCursor_(NULL, IDC_SIZE ) ;SetCursor_(NULL) ShowCursor_(FALSE) EndProcedure Windows() Repeat Event=WaitWindowEvent(100) Menu=EventMenu() If event=#PB_Event_Menu If Menu=1 Start=ElapsedMilliseconds() d=0 Zigzag() ;{ Вложенный цикл Repeat ;Kor_X=WindowMouseX(0) ; Это лишнее условие ;Kor_Y=WindowMouseY(0) ; Это лишнее условие If WindowMouseX(0) <>Kor_X Or WindowMouseY(0)<>Kor_Y Kor_X=WindowMouseX(0) Kor_Y=WindowMouseY(0) ;If Kor_Y>600-10 ;or_Y=600-10 ;EndIf StartDrawing(ImageOutput(0)) Circle(X_s, Y_s, 5,RGB(255,0,0)) DrawingMode(#PB_2DDrawing_Gradient) X_s=Kor_X Y_s=Kor_Y If Y_s<=5 And Y_s<>-1 DrawingMode(#PB_2DDrawing_Default ) Box(0,0,800,600,RGB(0,0,0)) StopDrawing() SetGadgetState(0,ImageID(0)) Debug Y_s ShowCursor_(-1) temp.f=(ElapsedMilliseconds()-start)/1000 MessageRequester("Информация!", "Задание выполнено! Затраченное время: "+Left(StrF(temp),5)+ " сек.", #MB_OK|#MB_ICONINFORMATION) Break EndIf BackColor($00FFFF) FrontColor($FF0000) For a=0 To 360 Step 15 If Kor_X<>-1 Cvet=Point(Cos(a*#PI/180)*5+Kor_X, Sin(a*#PI/180)*5+Kor_Y) EndIf If Cvet=RGB(0,0,0) DrawingMode(#PB_2DDrawing_Default ) Box(0,0,800,600,RGB(0,0,0)) StopDrawing() SetGadgetState(0,ImageID(0)) ;Debug Y_s ;Debug Cvet ShowCursor_(-1) temp=ElapsedMilliseconds()-start MessageRequester("Ошибка!", "Задание провалено, касание в точке с координатами:X= "+Str(Cos(a*#PI/180)*5+Kor_X)+" y= " +Str(Sin(a*#PI/180)*5+Kor_Y), #MB_OK|#MB_ICONQUESTION) Goto k EndIf Next a CircularGradient(X_s, Y_s, 5) Circle(X_s, Y_s, 5) StopDrawing() SetGadgetState(0,ImageID(0)) EndIf Until d=1 ;} ElseIf menu=2 End EndIf EndIf k: Until Event = #PB_Event_CloseWindow
А вообще, такие программы пишутся немного иначе. Посмотри в сторону OpenWindowedScreen - так будет правильнее
If InitSprite() = 0 MessageRequester("Error", "Can't open screen & sprite enviroment!", 0) End EndIf If OpenWindow(0, 0, 0, 220, 160, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(0, 170, 135, 45, 20, "Quit") If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160, 0, 0, 0) CreateSprite(0, 20, 20) If StartDrawing(SpriteOutput(0)) Box(0, 0, 20, 20, RGB(255, 0, 155)) Box(5, 5, 10, 10, RGB(155, 0, 255)) StopDrawing() EndIf Else MessageRequester("Error", "Can't open windowed screen!", 0) End EndIf EndIf direction = 2 Repeat ; It's very important to process all the events remaining in the queue at each frame ; Repeat Event = WindowEvent() Select Event Case #PB_Event_Gadget If EventGadget() = 0 End EndIf Case #PB_Event_CloseWindow End EndSelect Until Event = 0 FlipBuffers() ClearScreen(RGB(0, 0, 0)) DisplaySprite(0, x, x) x + direction If x > 140 : direction = -2 : EndIf If x < 0 : direction = 2 : EndIf Delay(1) ForEver
Ошибка в том, что Point не правильно присваиваются координаты. Ввел дополнительные условия.
Здорово, Спасибо!!! Заработало…
А вообще, такие программы пишутся немного иначе. Посмотри в сторону OpenWindowedScreen - так будет правильнее
Очень интересно, буду пробовать!!!
Возможно я туплю, но у меня упорно не хотят выводиться картинки. HTML сделан в Nvu. Подскажите, что не так?
Нужно указывать относительный путь к картинкам, а не абсолютный.
Экспериментирую с той же программой.
При запуске программы создаю таймер, который в строке состояния выводить текущие координаты курсора и время от начала работы. Но почему, при нажатии на «Старт» обновление информации на строке состояния прекращается, пока не происходит выхода из цикла…???
Я так понимаю, что тут как-то виноват цикл в цикле Repeat Repeat Until Until. Или что-то еще???
Таймер же по идее, не должен зависит от выполняемого кода, а должен вызывать свою процедуру каждые 100 Мсек., а тут получается, что он на время рисования внутри двойного цикла не работает??? Тут что получается, что при выполнении кода внутри двойного цикла, другие “операции”, активированные программой, игнорируются??? Или какой тут механизм???
Global X_s, Y_s Global Vrema_0 ;Время начала отсчета в таймере работы с программой Global Vrema_Tec ; на текущий момент замера Global Vrema_MS ; милисекунды Global Vrema_S Global Vrema_M Global Vrema_H Procedure Zatr_Vrema() ; Выводит время работы и Координаты Х и Y ... Vrema_Tec=ElapsedMilliseconds() ; Устанавликает переменную текущего времени на это мгновение... Vrema_MS=Vrema_Tec-Vrema_0 ; Vrema_0 на момент запуска равно 0 If Vrema_MS>=1000 ; если время достигло минуты то идет фактически обнуление Vrema_MS и +1 секунда... Vrema_0=ElapsedMilliseconds() Vrema_S=Vrema_S+1 If Vrema_S>=60 ; По аналагичной схеме минуты и часы... Vrema_S=0 Vrema_M=Vrema_M+1 If Vrema_M>=60 Vrema_M=0 Vrema_H=Vrema_H=1 EndIf EndIf EndIf StatusBarText(30,0,"Время работы: "+ Str(Vrema_H)+":"+Str(Vrema_M)+":"+Str(Vrema_S)+":"+Str(Vrema_MS)) ; Выводит число ошибок на строку состояния StatusBarText(30,1,"Координата X= "+ Str(WindowMouseX(0))) StatusBarText(30,2,"Координата Y= "+ Str(WindowMouseY(0))) EndProcedure Procedure Windows() If OpenWindow(0, 0, 0, 800, 645, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) CreateImage(0, 1000, 602) ImageGadget(0, 0, 0, 800, 602, ImageID(0)) If CreateMenu(0, WindowID(0)) MenuItem(1,"Старт") MenuItem(2,"Выход") EndIf If CreateStatusBar(30, WindowID(0)) AddStatusBarField(#PB_Ignore) AddStatusBarField(#PB_Ignore) AddStatusBarField(#PB_Ignore) SetTimer_(WindowID(0), 1, 100, @Zatr_Vrema() ) ; При создании окна запускается таймер показывающий время текущее и день недели... EndIf EndIf EndProcedure Procedure Zigzag() ;SetTimer_(WindowID(0), 1, 100, @Zatr_Vrema() ) V=Random(30) While V<20 V=Random(50) Wend ToRad.d = 1/V R=Random(250) While r<50 R=Random(250) Wend If StartDrawing(ImageOutput(0)) Box(0,0,800,601,RGB(0,0,0)) z.f=100 For x=0 To 600 color=RGB(255, 0, 0) For t=0 To z Plot(Sin(x*ToRad)*R+200+(z/2+t),x,color) Next t ToRad-0.00004 z+0.4 Next x ;LineXY (0,602,800,602,RGB(255,0,0)) ; Рисуем снизу линию DrawingMode(#PB_2DDrawing_Gradient) BackColor($00FFFF) FrontColor($FF0000) x=200+400 While Point(x+20, 600-25)<>RGB(255,0,0) x-5 Wend X_s=x Y_s=645-28 SetCursorPos_(WindowX(0)+X_s, WindowY(0)+20+Y_s) CircularGradient(X_s, Y_s, 5) Circle(X_s, Y_s, 5) ;Debug X_s ;Debug Y_s StopDrawing() SetGadgetState(0,ImageID(0)) EndIf ;SetCursorPos_(WindowX(0)+X_s, WindowY(0)+Y_s) ;wc.hCursor=LoadCursor_(NULL, IDC_SIZE ) ;SetCursor_(NULL) ShowCursor_(FALSE) EndProcedure Windows() Repeat Event=WaitWindowEvent(100) Menu=EventMenu() If event=#PB_Event_Menu If Menu=1 Start=ElapsedMilliseconds() d=0 Zigzag() ;{ Вложенный цикл Repeat ;Kor_X=WindowMouseX(0) ; Это лишнее условие ;Kor_Y=WindowMouseY(0) ; Это лишнее условие If WindowMouseX(0) <>Kor_X Or WindowMouseY(0)<>Kor_Y Kor_X=WindowMouseX(0) Kor_Y=WindowMouseY(0) ;If Kor_Y>600-10 ;or_Y=600-10 ;EndIf StartDrawing(ImageOutput(0)) Circle(X_s, Y_s, 5,RGB(255,0,0)) DrawingMode(#PB_2DDrawing_Gradient) X_s=Kor_X Y_s=Kor_Y If Y_s<=5 And Y_s<>-1 DrawingMode(#PB_2DDrawing_Default ) Box(0,0,800,601,RGB(0,0,0)) StopDrawing() SetGadgetState(0,ImageID(0)) Debug Y_s ShowCursor_(-1) temp.f=(ElapsedMilliseconds()-start)/1000 ;KillTimer_(WindowID(0),1) MessageRequester("Информация!", "Задание выполнено! Затраченное время: "+Left(StrF(temp),5)+ " сек.", #MB_OK|#MB_ICONINFORMATION) Break EndIf BackColor($00FFFF) FrontColor($FF0000) For a=0 To 360 Step 15 If Kor_X<>-1 ;Debug Kor_Y Cvet=Point(Cos(a*#PI/180)*5+Kor_X, Sin(a*#PI/180)*5+Kor_Y) EndIf If Cvet=RGB(0,0,0) DrawingMode(#PB_2DDrawing_Default ) Box(0,0,800,601,RGB(0,0,0)) StopDrawing() SetGadgetState(0,ImageID(0)) ;Debug Y_s ;Debug Cvet ShowCursor_(-1) ;KillTimer_(WindowID(0),1) temp=ElapsedMilliseconds()-start MessageRequester("Ошибка!", "Задание провалено, касание в точке с координатами:X= "+Str(Cos(a*#PI/180)*5+Kor_X)+" y= " +Str(Sin(a*#PI/180)*5+Kor_Y), #MB_OK|#MB_ICONQUESTION) Goto k EndIf Next a CircularGradient(X_s, Y_s, 5) Circle(X_s, Y_s, 5) StopDrawing() SetGadgetState(0,ImageID(0)) EndIf Until d=1 ;} ElseIf menu=2 KillTimer_(WindowID(0),1) End EndIf EndIf k: Until Event = #PB_Event_CloseWindow KillTimer_(WindowID(0),1) End
Отредактировано Lucagin (12.01.2011 15:55:39)
аймер же по идее, не должен зависит от выполняемого кода, а должен вызывать свою процедуру каждые 100 Мсек., а тут получается, что он на время рисования внутри двойного цикла не работает???
Таймер работает как надо. Но вот окно не обновляется во время внутреннего цикла -а тебе кажется, что таймер не работает. Вставь внутрь вложенного цикла WindowEvent()
... Repeat WindowEvent() ;Kor_X=WindowMouseX(0) ; Это лишнее условие ;Kor_Y=WindowMouseY(0) ; Это лишнее условие If WindowMouseX(0) <>Kor_X Or WindowMouseY(0)<>Kor_Y Kor_X=WindowMouseX(0) Kor_Y=WindowMouseY(0) ;If Kor_Y>600-10 ;or_Y=600-10 ...
И будет тебе счастье!
Таймер работает как надо. Но вот окно не обновляется во время внутреннего цикла -а тебе кажется, что таймер не работает. Вставь внутрь вложенного цикла WindowEvent()
Понял, спасибо!!!!
Вставь внутрь вложенного цикла WindowEvent()
Думаю что лучше использовать WaitWindowEvent(10) чтобы не грузило процессор на 100% как сейчас.
Думаю что лучше использовать WaitWindowEvent(10) чтобы не грузило процессор на 100% как сейчас.
Принято!!! Спасибо!!!
Нужно указывать относительный путь к картинкам, а не абсолютный.
Указываю - та же история!
Указываю - та же история!
max написал(а):Указываю - та же история!
http://depositfiles.com/files/tubpw3b71
Спасибо! Работает!
Ребят, а как сгенерировать в PB подобный лабиринт, случайным образом…
Какая, хотя бы логика, при генерации лабиринтов… ???
Как случайно нарисовать линии внутри поля еще могу себе представить ,а вот чтобы в этом еще проход был от входа к выходу, уже не могу придумать…
Ребят, а как сгенерировать в PB подобный лабиринт, случайным образом
Выше я выкладывал код игры, генерирующей лабиринт Вопросы новичка (продолжение…)
Подскажите, пожалуйста, в какое место строки
WebGadget(1, 10, 10, 780, 480, "file://"+GetPathPart(ProgramFilename())+"456.htm")
мне нужно вставить функцию Left(String$, 2), чтобы она сдвигала на два символа название файла?
Отредактировано max (12.01.2011 18:41:20)
Какая версия? | OffTop | 03.10.2021 |
Мне постоянно пищет вот это | Вопросы по PureBasic | 14.10.2011 |
Размер экрана в пикселях | Вопросы по PureBasic | 13.02.2011 |
консоль | Вопросы по PureBasic | 19.03.2015 |
Полноэкранные приложения на purebasic | Вопросы по PureBasic | 08.03.2011 |
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)