Автор Тема: Программирование на языке GAMBAS  (Прочитано 66629 раз)

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #75 : 09.01.2012 16:31:08 »
Ну и пожалуй последнее в этой связи... А что если я хочу указать на осях более подробные деления, скажем с шагом 5, а то и еще меньше. Дело в том, что с таким мелким шагом цифры сливаются и разобрать их становится невозможно. Есть ли решение?
Да конечно есть. Такое же, как и в жизни - изменить масштаб. Т.е. что бы ты сделал если бы был на уроке черчения? Нарисовал бы все в масштабе, например, 5:1. Т.е. надо все значения координат умножить на коэффициент 5, все в 5 раз больше. Ну и тогда и цифры войдут по шкале.

У меня вопрос небольшой.
Если я на невидимой форме разместил udp или tcp элемент управления. То при  попытке инициализации этой формы без иксов программа упадёт?
Я не знаю, это только попробовать и выяснить, как работает.
Хотя чето я не понял, зачем форма, если её запускать без иксов?

Оффлайн Rezedent12

  • Завсегдатай
  • *
  • Сообщений: 640
  • Цель оправдывает средства.
Re: Программирование на языке GAMBAS
« Ответ #76 : 09.01.2012 22:10:49 »
Хотя чето я не понял, зачем форма, если её запускать без иксов?
Потому что нужен tcp и udp сокет.

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #77 : 11.01.2012 07:21:19 »
Потому что нужен tcp и udp сокет.
Ну пожалуйста, консольное приложение и объявляйте объекты.
Public Sub Main()
Dim Udp As New UdpSocket
Dim Soc As New Socket


End

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #78 : 11.01.2012 10:24:58 »
Поправлена регистрация на
http://im-ua.org/
милости просим.
В блоге очень большая информация по Gambas, самая большая в русскоязычной сети.

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #79 : 04.04.2012 14:34:32 »
В связи с последними обновлениями дистрибутива решил перейти на гамбас3. Графический проект (сделанный на гамбас2) автоматически экспортируется, но при выполнении выдает cannot draw outside of draw event handler in FMain
пытался вникнуть в эту переписку http://old.nabble.com/Can-not-draw-outside-of-draw-enent-handler-td31246396.html
нарисовал к примеру линую так
Public Sub da_Draw() 'da название моей области рисования
  Draw.LineWidth = 2
Draw.Line(50, 100, 200, 150)
End
но мне бы вызывать данное событие при клике на какую-нибудь кнопку (так у меня было в старом проекте)
в общем, научите, кто может, по быстрому рисовать в гамбас3 или куда податься чего почитать

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
Re: Программирование на языке GAMBAS
« Ответ #80 : 05.04.2012 00:48:05 »
А в примерах (gambas3-example) посмотреть? Draw.Line встречается в следующих примерах:
Games/StarField
Games/GameOfLife
Drawing/Barcode
Drawing/Chart
Андрей Черепанов (cas@)

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #81 : 06.04.2012 11:49:30 »
В связи с последними обновлениями дистрибутива решил перейти на гамбас3. Графический проект (сделанный на гамбас2) автоматически экспортируется, но при выполнении выдает cannot draw outside of draw event handler in FMain
пытался вникнуть в эту переписку http://old.nabble.com/Can-not-draw-outside-of-draw-enent-handler-td31246396.html
нарисовал к примеру линую так
Public Sub da_Draw() 'da название моей области рисования
  Draw.LineWidth = 2
Draw.Line(50, 100, 200, 150)
End
Вот например рисование линии:
Public Sub ButtonLine_Click()
  Paint.Begin(DrawingArea1)
  Paint.Brush = Paint.Color(Color.RGB(128, 128, 255))
  Paint.MoveTo(10, 10)
  Paint.LineTo(1000, 1000)
  Paint.Stroke()
  Paint.End()
End

Почитать по Gambas можно тут
gambas.pro
самое большой собрание статей на русском

А в примерах можно посмотреть пример "Painting" в разделе рисование, там куча примеров.
« Последнее редактирование: 06.04.2012 11:52:56 от Archer »

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #82 : 06.04.2012 17:16:57 »
А в примерах (gambas3-example) посмотреть? Draw.Line встречается в следующих примерах:
Ок, установлю, посмотрю.

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #83 : 06.04.2012 17:20:39 »
Вот например рисование линии:
Public Sub ButtonLine_Click()
  Paint.Begin(DrawingArea1)
  Paint.Brush = Paint.Color(Color.RGB(128, 128, 255))
  Paint.MoveTo(10, 10)
  Paint.LineTo(1000, 1000)
  Paint.Stroke()
  Paint.End()
End
Этот код вызывает аналогичную ошибку cannot paint outside of draw event area in fmain

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #84 : 06.04.2012 17:43:13 »
DrawingArea1.Cahed=True

Забыл сказать, установите свойство Cahed. Не знаю, но без этого все попвтки работы с Paint или Draw.вызывают ошибки.

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #85 : 08.04.2012 05:19:36 »
DrawingArea1.Cahed=True

Забыл сказать, установите свойство Cahed. Не знаю, но без этого все попвтки работы с Paint или Draw.вызывают ошибки.
да, действительно. С этим свойством paint рисует, а вот такой draw нет
Public Sub Button1_Click()
Draw.Begin(da)
Draw.Line(10, 10, 50, 50)
Draw.End
End

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #86 : 08.04.2012 20:21:57 »
Почему нет, тоже рисует... Только не видно :)
Попробуй задать цвет линии, ну и толщину тоже:
Public Sub Button1_Click()
Draw.Begin(da)
Draw.Foreground = Color.Red
Draw.LineWidth = 2
Draw.Line(10, 10, 50, 50)
Draw.End
End

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #87 : 10.04.2012 12:59:42 »
8 апреля с небольшой задержкой был выпущен, как назвал его Benoît Minisini пасхальный релиз 3.1.

В релизе закрыто более 150 сообщений об ошибках и более 120 новшевств.

Все версии Gambas 3.х будут обратно совместимы, но учитываться это будет только в IDE Gambas 3.1. Т.е. судя по всему в Gambas 3.0 открыть проект Gambas 3.1 и более не получится.

Краткий список новшеств:
    Удобный и надежный упаковщик.
     Поддержка отмены и повтора в редакторе.
     Поддержка веб-страниц с ASP-подобным синтаксисом.
     Новые инструкции CHMOD, CHOWN и CHGRP.
     GOSUB инструкции.
     Более быстрая работа интерпретатора.
     Рабочая компонента gb.db.form.
     Новый переделанный элемент управления GridView, реализованный средствами Gambas.
     Новый gb.gsl компонент, который будет обеспечивать доступ к библиотеке GNU Scientific.[/li][/list]


gambas.pro

ska

  • Гость
Re: Программирование на языке GAMBAS
« Ответ #88 : 10.04.2012 13:24:38 »
Продолжаю мурыжить учебник 9 класса). Авторы не везде уделили внимание Gambas, поэтому приходится переводить из VB. В одном из заданий предполагается полет некой бабочки из нижнего левого угла в правый верхний. В общем такая вот анимация. Получилось так
Public Sub Timer1_Timer()
 Dim Image1, Image2 As Image
  Dim flg1 As Boolean
  Dim X, Y As Single
  X = X + 5
  Y = Y - 5
 
  Draw.Begin(DrawingArea1)
 
  Draw.Translate(0, 200)
  Image1 = Image.Load("~/btfly/bfly1.bmp")
  Image2 = Image.Load("~/btfly/bfly2.bmp")
  If flg1 Then
  flg1 = False
   Else
    flg1 = True
  Endif
 
  If flg1 Then
    Draw.Image(Image1, X, Y)
    Else
      Draw.Image(Image2, X, Y)
  Endif
 
  Draw.End
End
Однако моя бабочка замерла в левом нижнем углу и лететь не хочет). Как вы думаете почему?
Вроде все на месте - таймер с периодичностью в секунду должен вызывать данную процедуру, где переменная flg1 каждый раз меняет значение с true на false и соотвтетственно меняются картинки и их положение с шагом в 5 пикселей.
« Последнее редактирование: 10.04.2012 13:28:56 от ska »

Оффлайн Archer

  • Завсегдатай
  • *
  • Сообщений: 56
Re: Программирование на языке GAMBAS
« Ответ #89 : 10.04.2012 13:37:14 »
Да как же это она полетит. Значения X и Y всегда одни и теже.
Dim X, Y As Single
  X = X + 5
  Y = Y - 5
Вы их каждый раз инициализируете и присваиваете одно и тоже значения.
Нужно.
1. Создать глобальные переменные:
Public Image1, Image2 As Image
  Public flg1 As Boolean
  Public X, Y As Single
2. Вынести в другую функцию, например при открытии или также по кнопке но не в таймере, зачем каждый раз грузить из файла когда можно это сделать один раз. Загрузка медленный процесс:
  Image1 = Image.Load("~/btfly/bfly1.bmp")
  Image2 = Image.Load("~/btfly/bfly2.bmp")
3. В таймере оставить:
  Draw.Begin(DrawingArea1)

  If flg1 Then
  flg1 = False
   Else
    flg1 = True
  Endif
 
  Draw.Translate(0, 200)
  If flg1 Then
    Draw.Image(Image1, X, Y)
    Else
      Draw.Image(Image2, X, Y)
  Endif
  Draw.End
Плюс тут ошибка видимо
   Draw.Image(Image2, X, Y)
    Else
      Draw.Image(Image2, X, Y)
один и тот же Image2.