А можно как то понятнее задать вопрос? Куда вывести картнки - в 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 » Вопросы новичка (продолжение…)