purebasic.info

PureBasic forum
Текущее время: Ср ноя 22, 2017 2:01 am

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




Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 01, 2009 6:12 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2227
Откуда: Russia — Belarus
Благодарил (а): 0 раз.
Поблагодарили: 65 раз.
Пункты репутации: 11
Виктор, можно.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 1:41 pm 
Не в сети
ассистент

Зарегистрирован: Ср окт 28, 2009 9:51 am
Сообщений: 17
Откуда: Харьков
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Во исполненние задумки "сделать редактор", начал писать программу. Открыл окно, создал кнопки (пока не подключил) сделал координатную сетку, а заставить мышку передать свои тоординаты из окна с сеткой в "Circle" не получается. Конечная цель - что бы кружок рисовался и фиксировался в узлах сетки по нажатию левой кнопки мышки. В этом варианте я пока хотел получить координаты и рисовать бегающий кружок.
Подскажите, что нужно сделать?


Вложения:
red2.zip [1.09 KiB]
Скачиваний: 182

_________________
И нет бога, кроме Ассемблера, а MPLAB пророк его!
Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 2:42 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 18, 2009 3:41 am
Сообщений: 1126
Благодарил (а): 86 раз.
Поблагодарили: 11 раз.
Пункты репутации: 0
Виктор писал(а):
а это станочек с ЧПУ (самоделка)



какой станок :) модернизируешь?? газорезку чтоли?? :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 4:12 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6191
Благодарил (а): 16 раз.
Поблагодарили: 170 раз.
Пункты репутации: 48
Виктор писал(а):
Подскажите, что нужно сделать?


1.Все рисования в цикле, т.е. между Repeat-Until

2ю Для чего же я исходник Паинта давал? Там есть все события, которые надо обработать.

Повторю его ещё раз, но уже переделанный для версии 4.30
Код:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
 
Global ID, Zoom.l, FrontColor, BackColor, Mode, UnReDoCurrent.l, Filename.s, ImageX, ImageY, StartX, StartY, LineColor, BoxColor, EllipseColor
 
UseJPEGImageEncoder()
UseJPEGImageDecoder()
 
Procedure ClearAll()
  b.RECT
  b\right = WindowWidth(0)
  b\bottom = WindowHeight(0)
  InvalidateRect_(WindowID(0), @b, 1)
  SendMessage_(WindowID(0), #WM_PAINT, 0, 0)
EndProcedure
 
Procedure.s ProgramParams()
  Char.s = ProgramParameter()
  While Char.s <> ""
    Text.s + Char.s + " "
    Char.s = ProgramParameter()
  Wend
  ProcedureReturn Left(Text.s, Len(Text.s)-1)
EndProcedure
 
Enumeration
  #TB_FREEHAND
  #TB_LINE
  #TB_BOX
  #TB_ELLIPSE
  #TB_FILL
  #TB_PIPETTE
  #TB_NEW
  #TB_OPEN
  #TB_SAVE
  #TB_SAVEAS
  #TB_PREF
  #TB_UNDO
  #TB_REDO
  #TB_ZOOMIN
  #TB_ZOOMOUT
  #TB_FRONT
  #TB_BACK
  #TB_PLUGIN
  #TB_INFO
EndEnumeration
 
Procedure ToolBar()
  CreateToolBar(0, WindowID(0))
  ToolBarStandardButton(#TB_NEW, #PB_ToolBarIcon_New)
  ToolBarStandardButton(#TB_OPEN, #PB_ToolBarIcon_Open)
  ToolBarStandardButton(#TB_SAVE, #PB_ToolBarIcon_Save)
  ToolBarSeparator()
  ToolBarStandardButton(#TB_SAVEAS, #PB_ToolBarIcon_Save)
  ToolBarSeparator()
  ToolBarStandardButton(#TB_PREF, #PB_ToolBarIcon_Properties)
  ToolBarSeparator()
  ToolBarStandardButton(#TB_UNDO, #PB_ToolBarIcon_Undo)
  ToolBarStandardButton(#TB_REDO, #PB_ToolBarIcon_Redo)
  ToolBarSeparator()
  ToolBarImageButton(#TB_ZOOMIN, ImageID(3))
  ToolBarImageButton(#TB_ZOOMOUT, ImageID(4))
  ToolBarSeparator()
  ToolBarImageButton(#TB_FREEHAND, ImageID(5))
  ToolBarImageButton(#TB_LINE, ImageID(9))
  ToolBarImageButton(#TB_BOX, ImageID(10))
  ToolBarImageButton(#TB_ELLIPSE, ImageID(11))
  ToolBarImageButton(#TB_FILL, ImageID(6))
  ToolBarImageButton(#TB_PIPETTE, ImageID(7))
  ToolBarSeparator()
  ToolBarImageButton(#TB_FRONT, ImageID(1))
  ToolBarImageButton(#TB_BACK, ImageID(2))
  ToolBarSeparator()
  ToolBarImageButton(#TB_PLUGIN, ImageID(8))
  ToolBarSeparator()
  ToolBarStandardButton(#TB_INFO, #PB_ToolBarIcon_Help)
  DisableToolBarButton(0,Mode, 1)
 
  ToolBarToolTip(0,#TB_NEW      , "New")
  ToolBarToolTip(0,#TB_OPEN     , "Open...")
  ToolBarToolTip(0,#TB_SAVE     , "Save")
 
  ToolBarToolTip(0,#TB_SAVEAS   , "Save as...")
 
  ToolBarToolTip(0,#TB_PREF     , "Preferences")
 
  ToolBarToolTip(0,#TB_UNDO     , "Undo")
  ToolBarToolTip(0,#TB_REDO     , "Redo")
 
  ToolBarToolTip(0,#TB_ZOOMIN   , "Zoom in")
  ToolBarToolTip(0,#TB_ZOOMOUT  , "Zoom out")
 
  ToolBarToolTip(0,#TB_FREEHAND , "Freehand")
  ToolBarToolTip(0,#TB_LINE     , "Line")
  ToolBarToolTip(0,#TB_BOX      , "Box")
  ToolBarToolTip(0,#TB_ELLIPSE  , "Ellipse")
  ToolBarToolTip(0,#TB_FILL     , "Fill")
  ToolBarToolTip(0,#TB_PIPETTE  , "Pipette")
  ToolBarToolTip(0,#TB_FRONT    , "Left click color")
  ToolBarToolTip(0,#TB_BACK     , "Right click color")
  ToolBarToolTip(0,#TB_PLUGIN   , "Plugins")
 
  ToolBarToolTip(0,#TB_INFO     , "Info")
EndProcedure
 
Procedure CreateUnReDo()
  *Buffer = AllocateMemory(4*6)
  ProcedureReturn *Buffer
EndProcedure
 
Procedure AddUnReDo(*Buffer, Value)
  m = 0
  k = PeekL(*Buffer)
  k + 4
  PokeL(*Buffer, k)
  PokeL(*Buffer+k, Value)
  k + 4
  For k=k To (6*4)-4 Step 4
    PokeL(*Buffer+k, 0)
  Next
EndProcedure
 
Procedure UnDo(*Buffer)
  k = PeekL(*Buffer)
  If k > 4 And PeekL(*Buffer+(k-4)) <> 0
    k - 4
    PokeL(*Buffer, k)
  EndIf
  ProcedureReturn PeekL(*Buffer+k)
EndProcedure
 
Procedure ReDo(*Buffer)
  k = PeekL(*Buffer)
  If k < ((6*4)-4) And PeekL(*Buffer+k+4) <> 0
    k + 4
    PokeL(*Buffer, k)
  EndIf
  ProcedureReturn PeekL(*Buffer+k)
EndProcedure
 
Procedure ClearUnReDo(*Buffer)
  ;PokeL(*Buffer, 0)
  ;For k=4 To (6*4)-4 Step 4
   ; If IsImage(PeekL(*Buffer+k)) And (PeekL(*Buffer+k) < 0 Or PeekL(*Buffer+k) > 11)
    ;  FreeImage(PeekL(*Buffer+k))
    ;EndIf
    ;PokeL(*Buffer+k, 0)
  ;Next
EndProcedure
 
ID = CreateUnReDo()
 
Procedure Front_Color(Color)
  FrontColor = Color
  StartDrawing(ImageOutput(1))
  Box(0, 0, 64, 20, Color)
  StopDrawing()
  FreeToolBar(0)
  ToolBar()
EndProcedure
 
Procedure Back_Color(Color)
  BackColor = Color
  StartDrawing(ImageOutput(2))
  Box(0, 0, 64, 20, Color)
  StopDrawing()
  FreeToolBar(0)
  ToolBar()
EndProcedure
 
;Thanks to Lars for the filling methode ;)
Global NewList xFill_List.Point()
 
Procedure xFill(x.l, y.l, Width.l, Height.l, FillColor.l)
  BackGroundColor = Point(x, y)
  If FillColor = BackGroundColor
    ProcedureReturn
  EndIf
 
  AddElement(xFill_List())
  xFill_List()\x = x
  xFill_List()\y = y
  NumElements = 1
 
  Repeat
    ForEach xFill_List()
      If xFill_List()\x < 0 Or xFill_List()\x > Width Or xFill_List()\y < 0 Or xFill_List()\y > Height
        NumElements - 1
        DeleteElement(xFill_List())
        Continue
      EndIf
     
      Color = Point(xFill_List()\x, xFill_List()\y)
      If Color <> BackGroundColor
        NumElements - 1
        DeleteElement(xFill_List())
        Continue
      Else
        Plot(xFill_List()\x, xFill_List()\y, FillColor)
        NumElements + 4
       
        ox = xFill_List()\x
        oy = xFill_List()\y
       
        AddElement(xFill_List())
        xFill_List()\x = ox + 1
        xFill_List()\y = oy
       
        AddElement(xFill_List())
        xFill_List()\x = ox - 1
        xFill_List()\y = oy
       
        AddElement(xFill_List())
        xFill_List()\x = ox
        xFill_List()\y = oy + 1
       
        AddElement(xFill_List())
        xFill_List()\x = ox
        xFill_List()\y = oy - 1
      EndIf
    Next
  Until NumElements = 0
  ClearList(xFill_List())
EndProcedure
 
Procedure LEvent()
  MouseX = WindowMouseX(0)-ImageX
  MouseY = WindowMouseY(0)-ImageY
  If MouseX >= 0 And MouseY >= 0 And MouseY <= (ImageHeight(0)*Zoom) And MouseX <= (ImageWidth(0)*Zoom)
  If Mode = #TB_FREEHAND
      StartDrawing(ImageOutput(0))
      Plot(MouseX/Zoom, MouseY/Zoom, FrontColor)
      StopDrawing()
  ElseIf Mode = #TB_FILL
      StartDrawing(ImageOutput(0))
      xFill(MouseX/Zoom, MouseY/Zoom, ImageWidth(0), ImageHeight(0), FrontColor)
      StopDrawing()
  ElseIf Mode = #TB_PIPETTE
      StartDrawing(ImageOutput(0))
      FrontColor = Point(MouseX/Zoom, MouseY/Zoom)
      StopDrawing()
      Front_Color(FrontColor)
  EndIf
  EndIf
EndProcedure
 
Procedure REvent()
  MouseX = WindowMouseX(0)-ImageX
  MouseY = WindowMouseY(0)-ImageY
  If MouseX >= 0 And MouseY >= 0 And MouseY <= (ImageHeight(0)*Zoom) And MouseX <= (ImageWidth(0)*Zoom)
  If Mode = #TB_FREEHAND
      StartDrawing(ImageOutput(0))
      Plot(MouseX/Zoom, MouseY/Zoom, BackColor)
      StopDrawing()
  ElseIf Mode = #TB_FILL
      StartDrawing(ImageOutput(0))
      xFill(MouseX/Zoom, MouseY/Zoom, ImageWidth(0), ImageHeight(0), BackColor)
      StopDrawing()
  ElseIf Mode = #TB_PIPETTE
      StartDrawing(ImageOutput(0))
      BackColor = Point(MouseX/Zoom, MouseY/Zoom)
      StopDrawing()
      Back_Color(BackColor)
  EndIf
  EndIf
EndProcedure
 
Procedure New()
  Filename = ""
  ResizeImage(0, 64, 64)
  StartDrawing(ImageOutput(0))
  Box(0, 0, ImageWidth(0), ImageHeight(0), Back_Color)
  StopDrawing()
  ClearAll()
  ClearUnReDo(ID)
EndProcedure
 
Procedure Save()
  If Filename = ""
    Filename = SaveFileRequester("Save as...", "", "BMP|*.bmp|JPG|*.jpg", 0)
    If LCase(Right(Filename, 4)) <> ".bmp" And LCase(Right(Filename, 4)) <> ".jpg" And LCase(Right(Filename, 5)) <> ".jpeg"
      If SelectedFilePattern() = 0
      Filename + ".bmp"
      Else
      Filename + ".jpg"
      EndIf
    EndIf
  EndIf
  If Filename <> ""
  If Right(Filename, 4) = ".bmp"
    SaveImage(0, Filename, #PB_ImagePlugin_BMP)
  ElseIf Right(Filename, 4) = ".jpg"
    SaveImage(0, Filename, #PB_ImagePlugin_JPEG, 10)
  EndIf
  EndIf
EndProcedure
 
Procedure Open()
  Filename = OpenFileRequester("Open...", "", "BMP|*.bmp|JPG|*.jpg", 0)
  If Filename <> ""
  ClearUnReDo(ID)
  ClearAll()
  FreeImage(0)
  LoadImage(0, Filename)
  AddUnReDo(ID, CopyImage(0, #PB_Any))
  EndIf
EndProcedure
 
Procedure Attribute()
  OpenWindow(100, 0, 0, 300, 80, "Attribute", #PB_Window_SystemMenu | #PB_Window_WindowCentered)
  ;CreateGadgetList(WindowID(100))
  TextGadget(98, 10, 10, 90, 20, "Width:")
  TextGadget(99, 10, 30, 90, 20, "Height:")
  StringGadget(100, 100, 10, 180, 20, Str(ImageWidth(0)))
  StringGadget(101, 100, 30, 180, 20, Str(ImageHeight(0)))
  ButtonGadget(102, 10, 55, 280, 20, "Change")
  Repeat
    Event = WaitWindowEvent()
    If EventWindow() = 100
      If Event = #PB_Event_Gadget And EventGadget() = 102
        ResizeImage(0, Val(GetGadgetText(100)), Val(GetGadgetText(101)))
        Quit = 1
      EndIf
    Else
      SetActiveWindow(100)
    EndIf
  Until Event = #PB_Event_CloseWindow Or Quit = 1
  CloseWindow(100)
  SetActiveWindow(0)
  ClearAll()
  AddUnReDo(ID, CopyImage(0, #PB_Any))
EndProcedure
 
Procedure Plugin()
  OpenWindow(200, 0, 0, 200, 150, "Plugins", #PB_Window_SystemMenu | #PB_Window_WindowCentered)
  ;CreateGadgetList(WindowID(200))
  ExplorerListGadget(200, 0, 0, 200, 130, "Plugins\*.dll", #PB_Explorer_NoParentFolder | #PB_Explorer_NoSort)
  ButtonGadget(201, 0, 130, 200, 20, "UsePlugin")
  Repeat
    Event = WaitWindowEvent()
    If EventWindow() = 200
      If Event = #PB_Event_Gadget And EventGadget() = 201
        OpenLibrary(0, "Plugins"+GetGadgetItemText(200, GetGadgetState(200), 0))
        CallFunction(0, "Plugin", ImageID(0), ImageWidth(0), ImageHeight(0))
        CloseLibrary(0)
        AddUnReDo(ID, CopyImage(0, #PB_Any))
        Quit = 1
      EndIf
    Else
      SetActiveWindow(200)
    EndIf
  Until Event = #PB_Event_CloseWindow Or Quit = 1
  CloseWindow(200)
  SetActiveWindow(0)
  ClearAll()
EndProcedure
 
Procedure CalculateScrolling()
 
EndProcedure
 
ImageX = 0
ImageY = 30
#WindowWidth  = 500
#WindowHeight = 400
#WindowFlags  = #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu
 
hWnd = OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, "Bradan - PaintBox", #WindowFlags)
 
CreateImage(0, 200, 200)
AddUnReDo(ID, CopyImage(0, #PB_Any))
CreateImage(1, 16, 16)
CreateImage(2, 16, 16)
 
;-Icons
CatchImage(3, ?TB_ZoomIn)
CatchImage(4, ?TB_ZoomOut)
CatchImage(5, ?TB_Freehand)
CatchImage(6, ?TB_Fill)
CatchImage(7, ?TB_Pipette)
CatchImage(8, ?TB_Plugin)
CatchImage(9, ?TB_Line)
CatchImage(10, ?TB_Box)
CatchImage(11, ?TB_Ellipse)
 
ToolBar()
 
Zoom = 1
 
Back_Color($FFFFFF)
 
Filename = ProgramParams()
If Filename <> ""
  FreeImage(0)
  LoadImage(0, Filename)
EndIf
 
Cursor1 = LoadCursor_(0, #IDC_ARROW)
Cursor2 = LoadCursor_(0, #IDC_CROSS)
 
StartX = -1
StartY = -1
 
;-Main
Repeat
  MouseX = WindowMouseX(0)-ImageX
  MouseY = WindowMouseY(0)-ImageY
  If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
    SetClassLong_(hWnd,#GCL_HCURSOR,Cursor2)
  Else
    SetClassLong_(hWnd,#GCL_HCURSOR,Cursor1)
  EndIf
  StartDrawing(WindowOutput(0))
  DrawImage(ImageID(0), ImageX, ImageY, ImageWidth(0)*Zoom, ImageHeight(0)*Zoom)
  DrawingMode(2|4)
  If StartX <> -1 And StartY <> -1
   If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
    If Mode = #TB_LINE
      LineXY(StartX+ImageX, StartY+ImageY, MouseX+ImageX, MouseY+ImageY, LineColor)
    ElseIf Mode = #TB_BOX
      Box(StartX+ImageX, StartY+ImageY, (MouseX+ImageX)-(StartX+ImageX), (MouseY+ImageY)-(StartY+ImageY), BoxColor)
    ElseIf Mode = #TB_ELLIPSE
      Ellipse(StartX+ImageX, StartY+ImageY, (MouseX+ImageX)-(StartX+ImageX), (MouseY+ImageY)-(StartY+ImageY), EllipseColor)
    EndIf
   EndIf
  EndIf
  StopDrawing()
  Event = WaitWindowEvent()
  Select Event
    Case #WM_KEYDOWN
      If EventwParam() = #VK_ESCAPE And (Mode = #TB_LINE Or Mode = #TB_BOX Or Mode = #TB_ELLIPSE)
        StartX = -1
        StartY = -1
      EndIf
    Case #WM_MOUSEMOVE
      If EventwParam() = 1
      LEvent()
      ElseIf EventwParam() = 2
      REvent()
      EndIf
      If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
      SetWindowTitle(0, "Bradan - PaintBox  ("+Str(MouseX/Zoom)+"|"+Str(MouseY/Zoom)+")")
      Else
      SetWindowTitle(0, "Bradan - PaintBox")
      EndIf
    Case #WM_LBUTTONDOWN
      If Mode = #TB_LINE
        LineColor = FrontColor
        If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
          If StartX = -1 And StartY = -1
            StartX = MouseX
            StartY = MouseY
          Else
            StartDrawing(ImageOutput(0))
            LineXY(StartX/Zoom, StartY/Zoom, MouseX/Zoom, MouseY/Zoom, LineColor)
            StopDrawing()
            StartX = -1
            StartY = -1
            ClearAll()
            AddUnReDo(ID, CopyImage(0, #PB_Any))
          EndIf
        Else
          StartX = -1
          StartY = -1
          ClearAll()
        EndIf
      ElseIf Mode = #TB_BOX
        BoxColor = FrontColor
        If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
          If StartX = -1 And StartY = -1
            StartX = MouseX
            StartY = MouseY
          Else
            StartDrawing(ImageOutput(0))
            ;Box(StartX/Zoom, StartY/Zoom, (MouseX/Zoom)-(StartX/Zoom), MouseY/Zoom-(StartY/Zoom), BoxColor)
            StopDrawing()
            StartX = -1
            StartY = -1
            ClearAll()
            AddUnReDo(ID, CopyImage(0, #PB_Any))
          EndIf
        Else
          StartX = -1
          StartY = -1
          ClearAll()
        EndIf
      ElseIf Mode = #TB_ELLIPSE
        EllipseColor = FrontColor
        If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
          If StartX = -1 And StartY = -1
            StartX = MouseX
            StartY = MouseY
          Else
            StartDrawing(ImageOutput(0))
            Ellipse(StartX/Zoom, StartY/Zoom, (MouseX/Zoom)-(StartX/Zoom), MouseY/Zoom-(StartY/Zoom), EllipseColor)
            StopDrawing()
            StartX = -1
            StartY = -1
            ClearAll()
            AddUnReDo(ID, CopyImage(0, #PB_Any))
          EndIf
        Else
          StartX = -1
          StartY = -1
          ClearAll()
        EndIf
      Else
        LEvent()
      EndIf
    Case #WM_RBUTTONDOWN
      If Mode = #TB_LINE
        LineColor = BackColor
        If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
          If StartX = -1 And StartY = -1
            StartX = MouseX
            StartY = MouseY
          Else
            StartDrawing(ImageOutput(0))
            LineXY(StartX/Zoom, StartY/Zoom, MouseX/Zoom, MouseY/Zoom, LineColor)
            StopDrawing()
            StartX = -1
            StartY = -1
            ClearAll()
            AddUnReDo(ID, CopyImage(0, #PB_Any))
          EndIf
        Else
          StartX = -1
          StartY = -1
          ClearAll()
        EndIf
      ElseIf Mode = #TB_BOX
        BoxColor = BackColor
        If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
          If StartX = -1 And StartY = -1
            StartX = MouseX
            StartY = MouseY
          Else
            StartDrawing(ImageOutput(0))
            Box(StartX/Zoom, StartY/Zoom, (MouseX/Zoom)-(StartX/Zoom), MouseY/Zoom-(StartY/Zoom), BoxColor)
            StopDrawing()
            StartX = -1
            StartY = -1
            ClearAll()
            AddUnReDo(ID, CopyImage(0, #PB_Any))
          EndIf
        Else
          StartX = -1
          StartY = -1
          ClearAll()
        EndIf
      ElseIf Mode = #TB_ELLIPSE
        EllipseColor = BackColor
        If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
          If StartX = -1 And StartY = -1
            StartX = MouseX
            StartY = MouseY
          Else
            StartDrawing(ImageOutput(0))
            Ellipse(StartX/Zoom, StartY/Zoom, (MouseX/Zoom)-(StartX/Zoom), MouseY/Zoom-(StartY/Zoom), EllipseColor)
            StopDrawing()
            StartX = -1
            StartY = -1
            ClearAll()
            AddUnReDo(ID, CopyImage(0, #PB_Any))
          EndIf
        Else
          StartX = -1
          StartY = -1
          ClearAll()
        EndIf
      Else
        REvent()
      EndIf
    Case #WM_LBUTTONUP
      If Mode <= 2
      If MouseY >= 0 And MouseY <= ImageHeight(0)*Zoom And MouseX >= ImageX And MouseX <= ImageWidth(0)*Zoom
      AddUnReDo(ID, CopyImage(0, #PB_Any))
      EndIf
      EndIf
    Case #WM_RBUTTONUP
      If Mode <= 2
      AddUnReDo(ID, CopyImage(0, #PB_Any))
      EndIf
    Case #PB_Event_Menu
      Select EventMenu()
        Case #TB_FRONT
          Front_Color(ColorRequester())
        Case #TB_BACK
          Back_Color(ColorRequester())
        Case #TB_ZOOMIN
          Zoom + 1
        Case #TB_ZOOMOUT
          If Zoom > 1
            Zoom - 1
          EndIf
          ClearAll()
        Case #TB_UNDO
          FreeImage(0)
          CopyImage(UnDo(ID), 0)
        Case #TB_REDO
          FreeImage(0)
          CopyImage(ReDo(ID), 0)
        Case #TB_FREEHAND
          Mode = #TB_FREEHAND
          DisableToolBarButton(0,#TB_FREEHAND, 1)
          DisableToolBarButton(0,#TB_FILL    , 0)
          DisableToolBarButton(0,#TB_PIPETTE , 0)
          DisableToolBarButton(0,#TB_LINE    , 0)
          DisableToolBarButton(0,#TB_BOX     , 0)
          DisableToolBarButton(0,#TB_ELLIPSE , 0)
          StartX = -1
          StartY = -1
        Case #TB_FILL
          Mode = #TB_FILL
          DisableToolBarButton(0,#TB_FREEHAND, 0)
          DisableToolBarButton(0,#TB_FILL    , 1)
          DisableToolBarButton(0,#TB_PIPETTE , 0)
          DisableToolBarButton(0,#TB_LINE    , 0)
          DisableToolBarButton(0,#TB_BOX     , 0)
          DisableToolBarButton(0,#TB_ELLIPSE , 0)
          StartX = -1
          StartY = -1
        Case #TB_PIPETTE
          Mode = #TB_PIPETTE
          DisableToolBarButton(0,#TB_FREEHAND, 0)
          DisableToolBarButton(0,#TB_FILL    , 0)
          DisableToolBarButton(0,#TB_PIPETTE , 1)
          DisableToolBarButton(0,#TB_LINE    , 0)
          DisableToolBarButton(0,#TB_BOX     , 0)
          DisableToolBarButton(0,#TB_ELLIPSE , 0)
          StartX = -1
          StartY = -1
        Case #TB_LINE
          Mode = #TB_LINE
          DisableToolBarButton(0,#TB_FREEHAND, 0)
          DisableToolBarButton(0,#TB_FILL    , 0)
          DisableToolBarButton(0,#TB_PIPETTE , 0)
          DisableToolBarButton(0,#TB_LINE    , 1)
          DisableToolBarButton(0,#TB_BOX     , 0)
          DisableToolBarButton(0,#TB_ELLIPSE , 0)
          StartX = -1
          StartY = -1
        Case #TB_BOX
          Mode = #TB_BOX
          DisableToolBarButton(0,#TB_FREEHAND, 0)
          DisableToolBarButton(0,#TB_FILL    , 0)
          DisableToolBarButton(0,#TB_PIPETTE , 0)
          DisableToolBarButton(0,#TB_LINE    , 0)
          DisableToolBarButton(0,#TB_BOX     , 1)
          DisableToolBarButton(0,#TB_ELLIPSE , 0)
          StartX = -1
          StartY = -1
        Case #TB_ELLIPSE
          Mode = #TB_ELLIPSE
          DisableToolBarButton(0,#TB_FREEHAND, 0)
          DisableToolBarButton(0,#TB_FILL    , 0)
          DisableToolBarButton(0,#TB_PIPETTE , 0)
          DisableToolBarButton(0,#TB_LINE    , 0)
          DisableToolBarButton(0,#TB_BOX     , 0)
          DisableToolBarButton(0,#TB_ELLIPSE , 1)
          StartX = -1
          StartY = -1
        Case #TB_INFO
          MessageRequester("Info", "http://www.bradan.net/"+Chr(10)+Chr(10)+"If you created a plugin, send it to me."+Chr(10)+"And give me feedback in my forum please ;) .")
        Case #TB_PREF
          Attribute()
        Case #TB_SAVEAS
          Filename = ""
          Save()
        Case #TB_SAVE
          Save()
        Case #TB_OPEN
          Open()
        Case #TB_NEW
          New()
        Case #TB_PLUGIN
          Plugin()
      EndSelect
    Case #WM_SIZE
      ClearAll()
  EndSelect
Until Event = #PB_Event_CloseWindow
End
 
TB_ZoomIn:
IncludeBinary "TB_ZoomIn.ico"
 
TB_ZoomOut:
IncludeBinary "TB_ZoomOut.ico"
 
TB_Freehand:
IncludeBinary "TB_Freehand.ico"
 
TB_Fill:
IncludeBinary "TB_Fill.ico"
 
TB_Line:
IncludeBinary "TB_Line.ico"
 
TB_Box:
IncludeBinary "TB_Box.ico"
 
TB_Ellipse:
IncludeBinary "TB_Ellipse.ico"
 
TB_Pipette:
IncludeBinary "TB_Pipette.ico"
 
TB_Plugin:
IncludeBinary "TB_Plugin.ico"



Этот исходник надо переписать вместо того, что в архиве.

Обращаю внимание, что координаты мыши в окне WindowMouseX(0) и WindowMouseY(0)
Событие нажатия на ЛКМыши #WM_LBUTTONDOWN
на правую - #WM_RBUTTONDOWN

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 7:18 pm 
Не в сети
ассистент

Зарегистрирован: Ср окт 28, 2009 9:51 am
Сообщений: 17
Откуда: Харьков
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Уважаемая Профессура, программа "Paint" чересчур сложна для студента, который менее недели знаком с РВ. Я перелопатил все доступные источники информации, а именно:
- help, англ и рус варианты;
- PureBasic - A Beginner’s Guide To Computer Programming;
- PureBasic Reference Manual. PureBasic 4.30 Windows;
- Основы языка PureBasic 4.00. П. Высочанский;
- wiki.pbasic.spb.ru
Нигде не расписано где и в какой последовательности производить опрос мыши. поэтому я и прошу вас помочь. Если фрагмент моей программы категорически ошибочен и не подходит для выполнения поставленных мною задач - укажите мне на ошибки, я буду благодарен. Если есть какая-то не найденная мной литература - подскажите.
Я думаю, что поставить точку или кружочек в месте, указанном мышью, не есть сложность для вас. Всего-то, напишите несколько строк и поставьте их в нужном месте. Если это сложно для Вас, то для меня и подавно- брошу эту затею.
Заранее благодарен!
О станочке: весьма сложный аппарат - около 500 деталей. Разрабатывается "с нуля". Применение - Легпром.

_________________
И нет бога, кроме Ассемблера, а MPLAB пророк его!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 8:38 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6191
Благодарил (а): 16 раз.
Поблагодарили: 170 раз.
Пункты репутации: 48
Ну держи "рисовалку кружочков"

Код:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
;***************************************************************
; Мой редактор номер 1. Начато 29 октября 2009г.
;День второй с момента начала освоения великого и могучего языка
;***************************************************************
  #atribut=#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget
  #shirina=2000
  #visota=2000
  #shag=10
 
  ;***********************************************************
  ;********   Процедура рисования сеткм **********************
  ;***********************************************************
  Procedure Setka(shirina,visota,shag)
      kol_y=Int(#visota/#shag-1)
      For k=0 To kol_y
        LineXY(0,k*| style="color: #924B72;">#shag,#shirina, k*| style="color: #924B72;">#shag, RGB(255, 200, 200))
      Next
      kol_x=Int(#shirina/#shag-1)
 ;     Debug  kol_x
      For k=0 To kol_x
        LineXY(k*| style="color: #924B72;">#shag,0, k*| style="color: #924B72;">#shag, #visota, RGB(255, 200, 200))
      Next      
  EndProcedure
 
  Procedure ClearAll(); ПЕРЕРИСОВКА ОКНА
  b.RECT
  b\right = WindowWidth(0)
  b\bottom = WindowHeight(0)
  InvalidateRect_(WindowID(0), @b, 1)
  SendMessage_(WindowID(0), #WM_PAINT, 0, 0)
EndProcedure
 
   Procedure CirclePaint(MouseX,MouseY);рисуем кружочки
    If StartDrawing(ImageOutput(0))
  DrawingMode(#PB_2DDrawing_Default)
             Circle(MouseX,MouseY,15,RGB(255,0,255))
      StopDrawing()
         EndIf
         ClearAll()
  EndProcedure
 
If OpenWindow(0,10,0, 1000, 700, "Редактор", #atribut)
          ButtonGadget(2, 10, 30, 40, 20, "")
          ButtonGadget(3, 10, 60, 40, 20, "")  
  If CreateImage(0, #shirina, #visota)
    If StartDrawing(ImageOutput(0))
      Box(1, 1, #shirina-2, #visota-2, RGB(255, 255, 255))
      ScrollAreaGadget(1, 150, 25, 850, 675, #shirina, #visota, 30)
       Circle(100,100,50,RGB(0,0,255))     ;  тест, до сетки    
            Setka(0,0,0)      ; координатная сетка
      Box(400,400,80,80, RGB(0,255,0))  ;  тест, после сетки
      DrawingMode(#PB_2DDrawing_Transparent)
      FrontColor(RGB(255,0,255))
      DrawText(700,500,"Проверка правописания") ; Для понта, тест
      StopDrawing()
    EndIf
 
  EndIf
 
  ImageGadget(0, 0, 0, 0, 0, ImageID(0))
 
 InitMouse()
 
 
  Repeat
   MouseX = WindowMouseX(0)-150; корректируем относительно главного окна
   MouseY = WindowMouseY(0)-10
    EventID = WaitWindowEvent()
    Select EventID
    Case #WM_LBUTTONUP ; жмем левую кнопку
          CirclePaint(MouseX,MouseY)
    Case #WM_RBUTTONDOWN; жмем правую кнопку
          CirclePaint(MouseX,MouseY)
    EndSelect
   
   
  Until EventID = #PB_Event_CloseWindow
 
EndIf
 
End  
 


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 8:50 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6191
Благодарил (а): 16 раз.
Поблагодарили: 170 раз.
Пункты репутации: 48
Виктор писал(а):
Если есть какая-то не найденная мной литература - подскажите.


Ещё один архиважный источник - это архив исходных кодов. Советую изучить:

http://purearea.net/pb/download/CodeArchiv_v4-Beta.rar

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 8:51 pm 
Не в сети
ассистент

Зарегистрирован: Ср окт 28, 2009 9:51 am
Сообщений: 17
Откуда: Харьков
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Cпасибо,kvitaliy!
Разбираюсь дальше, с Вашей и божьей поммощью.

_________________
И нет бога, кроме Ассемблера, а MPLAB пророк его!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 9:25 pm 
Не в сети
док

Зарегистрирован: Ср авг 05, 2009 7:16 pm
Сообщений: 167
Откуда: Киев
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Может пригодится.
http://purebasic-lounge.com/viewtopic.php?t=5166

_________________
Уравняй победу с поражением и сражайся...
Действие - все, цель ничто.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 02, 2009 10:23 pm 
Не в сети
ассистент

Зарегистрирован: Ср окт 28, 2009 9:51 am
Сообщений: 17
Откуда: Харьков
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
В программе, предложенной kvitaliy, есть недостаток: координаты мышки считываются с главного окна, а "кружочки" отображаются на вложенном- сетчатом. При передвижении сетчатого окна с помощью прокрутки, кружочки отображаются не на месте указателя мышки.
CodeArciv скачал ещё на предварительном этапе, примеры с мышкой просмотрел все. Программка от ol-master- весьма интересная, буду разбираться.
РВ оказался сложней, чем я думал: с литературой - "напряг". Может быть не потяну и вернусь на Liberty, несмотря на его существенные недостатки.
Некоторые синтаксические конструкции РВ мне не понятны, например:
If OpenWindow(0,10,0.........
........
........
EndIf
Перевожу как я понимаю: если окно откыто .... то что, будет сквозняк что-ли. Почему-бы не так: OpenWindow(0,10,0... без IF and EndIf-?
Все это - лирика. Спасибо откликнувшимся.

_________________
И нет бога, кроме Ассемблера, а MPLAB пророк его!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 03, 2009 12:27 am 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Виктор писал(а):
то что, будет сквозняк что-ли

Сквозняк врядли :D , а вот программа будет выполняться дальше. Если окно по какой либо причине не открылось, прога благополучно завершиться.

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 03, 2009 7:38 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6191
Благодарил (а): 16 раз.
Поблагодарили: 170 раз.
Пункты репутации: 48
Виктор писал(а):
В программе, предложенной kvitaliy, есть недостаток: координаты мышки считываются с главного окна, а "кружочки" отображаются на вложенном- сетчатом. При передвижении сетчатого окна с помощью прокрутки, кружочки отображаются не на месте указателя мышки.


Вот тебе новый код - рисует кружочки по всему полю правильно.
Код:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
;***************************************************************
; Мой редактор номер 1. Начато 29 октября 2009г.
;День второй с момента начала освоения великого и могучего языка
;***************************************************************
  #atribut=#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget
  #shirina=2000
  #visota=2000
  #shag=10
 
  ;***********************************************************
  ;********   Процедура рисования сеткм **********************
  ;***********************************************************
  Procedure Setka(shirina,visota,shag)
      kol_y=Int(#visota/#shag-1)
      For k=0 To kol_y
        LineXY(0,k*| style="color: #924B72;">#shag,#shirina, k*| style="color: #924B72;">#shag, RGB(255, 200, 200))
      Next
      kol_x=Int(#shirina/#shag-1)
 ;     Debug  kol_x
      For k=0 To kol_x
        LineXY(k*| style="color: #924B72;">#shag,0, k*| style="color: #924B72;">#shag, #visota, RGB(255, 200, 200))
      Next      
  EndProcedure
 
  Procedure ClearAll(); ПЕРЕРИСОВКА ОКНА
  b.RECT
  b\right = WindowWidth(0)
  b\bottom = WindowHeight(0)
  InvalidateRect_(WindowID(0), @b, 1)
  SendMessage_(WindowID(0), #WM_PAINT, 0, 0)
EndProcedure
 
   Procedure CirclePaint(MouseX,MouseY);рисуем кружочки
    If StartDrawing(ImageOutput(0))
  DrawingMode(#PB_2DDrawing_Default)
             Circle(MouseX,MouseY,15,RGB(255,0,255))
      StopDrawing()
         EndIf
         ClearAll()
  EndProcedure
Procedure Get_MouseX(Gadget)
  GetCursorPos_(mouse.POINT)
  MapWindowPoints_(0,GadgetID(Gadget),mouse,1)
  ProcedureReturn mouse\x
EndProcedure
 
 
Procedure Get_MouseY(Gadget)
  GetCursorPos_(mouse.POINT)
  MapWindowPoints_(0,GadgetID(Gadget),mouse,1)
  ProcedureReturn mouse\y
EndProcedure
If OpenWindow(0,10,0, 1000, 700, "Редактор", #atribut)
          ButtonGadget(2, 10, 30, 40, 20, "")
          ButtonGadget(3, 10, 60, 40, 20, "")  
  If CreateImage(0, #shirina, #visota)
    If StartDrawing(ImageOutput(0))
      Box(1, 1, #shirina-2, #visota-2, RGB(255, 255, 255))
      ScrollAreaGadget(1, 150, 25, 850, 675, #shirina, #visota, 30)
       Circle(100,100,50,RGB(0,0,255))     ;  тест, до сетки    
            Setka(0,0,0)      ; координатная сетка
      Box(400,400,80,80, RGB(0,255,0))  ;  тест, после сетки
      DrawingMode(#PB_2DDrawing_Transparent)
      FrontColor(RGB(255,0,255))
      DrawText(700,500,"Проверка правописания") ; Для понта, тест
      StopDrawing()
    EndIf
 
  EndIf
 
  ImageGadget(0, 0, 0, 0, 0, ImageID(0))
 
 InitMouse()
 
 
  Repeat
   MouseX = Get_MouseX(0) ;координаты мышки
   MouseY = Get_MouseY(0);
    EventID = WaitWindowEvent()
    Select EventID
    Case #WM_LBUTTONUP ; жмем левую кнопку
          CirclePaint(MouseX,MouseY)
    Case #WM_RBUTTONDOWN; жмем правую кнопку
          CirclePaint(MouseX,MouseY)
    EndSelect
   
   
  Until EventID = #PB_Event_CloseWindow
 
EndIf
 
End  
 


Виктор писал(а):
Некоторые синтаксические конструкции РВ мне не понятны, например:
If OpenWindow(0,10,0.........
........


Не бойся эксперементировать - не нравятся конструкции пробуй без них. Некоторые, типа этой про окно, видимо созданы для совместимости с другими ОС. Для Винды окошко - главный элемент и я ещё не видел случая, что бы Винда отказывалась создать окно.
:D
А что на Либерти с литературой лучше дела обстоят? Или может там русскоязычный форум "продвинутее" нашего?

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 03, 2009 11:28 am 
Не в сети
ассистент

Зарегистрирован: Ср окт 28, 2009 9:51 am
Сообщений: 17
Откуда: Харьков
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
С литературой на Либерти, я бы не сказал, что намного лучше, но всё-таки, была выпущена одна книга на русском - "Основы программирования для чайников. Уоллес Вонг", и я ее приобрел. Вэтой книге из 376 страниц более половины полсвящено Либерти. Описания из этой книги достаточно для работы с ЛБ. Если интересно, наверное, ее можно найти в И-нете.
На Либерти я делал предыдуший редактор для предыдущего станка. Возможностей у него меньше, чем у РВ, но для той версии хватило. Ограничения ЛБ можно обойти, но хочется большего.
Сегодня займусь составлением формализованного ТЗ. Как напишу-выложу на всеобщее обозрение.

_________________
И нет бога, кроме Ассемблера, а MPLAB пророк его!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 03, 2009 1:53 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6191
Благодарил (а): 16 раз.
Поблагодарили: 170 раз.
Пункты репутации: 48
Виктор писал(а):
выпущена одна книга на русском - "Основы программирования для чайников. Уоллес Вонг",

Есть у меня. Теперь понятно, почему мне знакомо это название "Либерти".
Это же вообще интерпретатор, а вернее даже код компилируется в р-код, а потом исполняется. Т.е компактный ехе создать невозможно, для распространения своих программ нужна специальная среда исполнения, в принципе, и скорость выполнения у таких программ крайне низкая. Но для управления станком наверно пойдет - там ведь космическое скорости не нужны?

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 03, 2009 2:45 pm 
Не в сети
ассистент

Зарегистрирован: Ср окт 28, 2009 9:51 am
Сообщений: 17
Откуда: Харьков
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy,насчет скорострельности ты прав, и более того, на компьютере только подготавливаются данные для станка, переносятся в Flash память, а управление самим станком осуществляют PIC контроллеры, которых там несколько: один - индикация, второй - клавиатура, третий-датчики и т д., связь по SPI - так проще.

_________________
И нет бога, кроме Ассемблера, а MPLAB пророк его!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

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


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

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


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

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