помогите нарисовать сетку с точками

Предыдущая тема Следующая тема Перейти вниз

помогите нарисовать сетку с точками

Сообщение  electrik в Чт Май 31, 2012 9:39 pm

привет всем. вот и мне понадобилось чуток графики. сам с графикой не заморачивался, а лишь адаптировал примеры с других языков.
как я уже тут говорил, я незрячий. но это сути не меняет.
короче, мне нужно нарисовать сетку на экране.
скажем разрешение 800 на 600.
далее в эти клетки, пусть они будут квадратные, нужно рисовать точки следующим путём:
кликнул левой кнопкой мыши в клеточке, появилась точка. кликнул еще раз, она стёрлась.
причем, как только нарисовалась точка, в переменные получаются координаты ТОЧКИ.
КАК СТЁРЛАСЬ, В ПЕРЕМЕННЫЕ ЗАПИСЫВАЮТСЯ НУЛИ
точки могут быть только внутри клеток, тоесть, если я ткну по бордюру клеточки, точка там не рисуется.
фигово когда не видишь, но ещё несколько пояснений.
короче, из этих точек я хочу рисовать рисунок, но ввиде брайлевского рисунка.
возьмите бумагу, положите ее на полотенце, возьмите иголку и наколите цифру восемь.
расстояние между точками, ну скажем, 1.2 миллиметра.
а на экране, должно быть так же, только в клеточках. незнаю, делает ли кто так, но мне это надо на работу. для зрячего прогу писать задумал, а он в этих клеточках будет рисовать рисунок вот таким путём.
НА ЭКРАНЕ НЕ ОБЯЗАТЕЛЬНО В МИЛЛИМЕТРАХ, ЭТО Я ТАК ДЛЯ НАГЛЯДНОСТИ. Я ЗНАЮ, ЧТО НА ЭКРАНЕ ВСЕ В ПИКСЕЛЯХ рисуется.
почему в клеточках, так мне будет удобней координаты привязывать и переделывать в тот формат, который понимает машина, которая делает эти точки на металлических матрицах.
А ФОРМАТ ПРИМЕРНО ТАКОЙ:

X0- УСТАНОВИТЬ КАРЕТКУ ПО ОСИ X В 0
Y0- УСТАНОВИТЬ КАРЕТКУ ПО ОСИ Y В 0
X35- ПОДВИНУТЬ КАРЕТКУ НА 35 ШАГОВ ВПЕРЕД ПО ОСИ X
.- СТУКНУТЬ ТУДА ТОЧКУ.

да и ему, наверное будет удобно поклеточкам расчитывать сколько точек рисовать надо.
естественно, клеточки должны быть мелкие, всмысле не жирные, а вот точки жирные.
попытаюсь объяснить.
возьмем иголку, и чуток кольнём бумагу, будет мелкая точка(низкая).
протнём на сквозь, будет крупная(высокая).
КРУПНАЯ, ВСМЫСЛЕ НЕ ШИРОКАЯ.
хотел переводить из графического формата pcx, но там анализировать картинку надо, вот я и задумал рисовалку написать, чтоб он не в paint рисовал, а в моей проге.
ДА И МНЕ гЕМОРРОЯ МЕНЬШЕ.
целиком прогу мне писать не надо, просто напишите какую-нибудь фигню из 3 подрят клеток, ткнул мышкой, нарисовалась точка, в переменные получили ее координаты на экране, еще раз ткнул, стёрлась.
естественно, ни каких наворотов, достаточно клетки одного цвета, точки другого, или это уже не обязательно?
там уж погляжу сурс, да сам докумекаю как это сделать. жена с подглядом, поглядит что на экране у меня будет.
если на winapi, отлично, но я думаю, в моем случае выбор не велик, так что и на встроенных в FreeBasic тож пойдёт.
вообще, может и ненужны клеточки, может точки по пикселям как-ниьбудь?
вообще, в живую бы поговорить, так сказать узнать как лучше сделать.
короче мой skype:
electrik-spb
днём до 8 часов на работе, потом авторизую.
несплю до 2 ночи.
зовут сергей.

пока писал, посетила идея. привяжу еще ее к клавиатуре, нажал стрелку вправо, переместился на следующую клетку, ткнул пробел, появилась в клетке точка, так сам рисовать смогу.
вобщем ьбуду благодарен, а то мужик с калькулятором сидит, и просчитывает эти точки, а букварь для людей ослепших в взрослом возрасте, сделать надо.

electrik

Сообщения : 394
Дата регистрации : 2008-09-02
Возраст : 36
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  trew в Пт Июн 01, 2012 6:15 am

Сергей! Очень много написано, но лучше бы сделал небольшой рисунок того, что требуется хотя бы в том же Paint. Я только предполагаю: сетка нужна с шагом 2 , а рисуемые пользователем точки между ними?

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  electrik в Пт Июн 01, 2012 11:05 am

ну да, сетка с квадратиками, а в них точки.
вот рисунок, но это так, как рисует мой сотрудник.



там нарисованная точками восьмёрка должна быть.
если не получилось у меня вставить рисунок вот он по ссылке:
http://svalka-spb.narod.ru/8.pcx

electrik

Сообщения : 394
Дата регистрации : 2008-09-02
Возраст : 36
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  trew в Пт Июн 01, 2012 12:29 pm

Вот такой написал код. Может конечно что надо подделать, но под описание вроде подходит. Сделал только для мыши. С привязкой клавы я думаю проблем не будет, но если что без проблем помогу.

Код:

#Include "fbgfx.bi"

Using FB
Dim As Integer Wscr = 800,Hscr = 600 ' размеры экрана
Dim As Integer ColorBg=15, colorFrame = 0,ColorPoint=5 'цвета фона,рамки,точки
Dim As Integer StepFrame = 10 ' шаг рамки
Dim As Integer MouseX,MouseY ' координаты мыши
Dim As Integer PointX,PointY ' номера ячеек по осям
Dim As EVENT event ' структура событий
Dim As Any Ptr img ' буфер изображения

ScreenRes Wscr,Hscr,,2
ScreenSet 1
img = ImageCreate(Wscr,Hscr,ColorBg)

' рисуем сетку
For x As Integer = 0 To Wscr Step StepFrame
   Line img,(x,0)- Step(0,Hscr),colorFrame
Next
For y As Integer = 0 To Hscr Step StepFrame
   Line img,(0,y)- Step(Wscr,0),colorFrame
Next


Do
   If (ScreenEvent(@Event)) Then
      If Event.type = EVENT_MOUSE_BUTTON_PRESS Then
         If MouseX>0 Or MouseX<Wscr Then
            Select Case MouseY
               Case 0 To Hscr
                  PointX= MouseX\StepFrame '<- номер ячейки по оси Х
                  PointY= MouseY\StepFrame '<- номер ячейки по оси Y
                  If Point(PointX*StepFrame+StepFrame\2,PointY*StepFrame+StepFrame\2)= ColorPoint Then
                     Circle img,(PointX*StepFrame+StepFrame\2,PointY*StepFrame+StepFrame\2),StepFrame\2-1,Colorbg,,,,F
                  ElseIf Point(PointX*StepFrame+StepFrame\2,PointY*StepFrame+StepFrame\2)= Colorbg Then
                     Circle img,(PointX*StepFrame+StepFrame\2,PointY*StepFrame+StepFrame\2),StepFrame\2-1,ColorPoint,,,,F
                  EndIf
            End Select
         EndIf
      ElseIf Event.type = EVENT_MOUSE_BUTTON_RELEASE Then
      ElseIf Event.type=EVENT_MOUSE_MOVE Then
         MouseX=Event.x:MouseY=Event.y
      EndIf
   EndIf
   Sleep(5)
   Cls
   Put(0,0),img
   PCopy
Loop
ImageDestroy(img)

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  electrik в Пт Июн 01, 2012 1:21 pm

привет. человеческое спасибо, код понятен, буду ковырять.
я так понял, чтоб сохранить нарисованное в файл, надо использовать функцию ImageInfo, получать необходимое, и сохранять буфер в файл.
чтобы загрузить, сначала вызываем imagecreate, потом заполняем буфер и вызываем put и pcopy.

electrik

Сообщения : 394
Дата регистрации : 2008-09-02
Возраст : 36
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  trew в Пт Июн 01, 2012 1:39 pm

electrik пишет:привет. человеческое спасибо, код понятен, буду ковырять.
я так понял, чтоб сохранить нарисованное в файл, надо использовать функцию ImageInfo, получать необходимое, и сохранять буфер в файл.
чтобы загрузить, сначала вызываем imagecreate, потом заполняем буфер и вызываем put и pcopy.

Чтобы сохранить в файл достаточно такого:

BSave("1.bmp",img)

Чтобы загрузить в буфер, создаем буфер (если не создано) с помощью ImageCreate а потом:

BLoad "picture.bmp", img

И дальше как ты написал Put и Pcopy

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  electrik в Вт Июн 19, 2012 5:34 pm

привет. мои успехи с программой отличные. уже выводим графику на брайлевскую печать.
теперь маленькая заморочка. так захотелось человеку, и мы работаем в нестандартном разрешении - 1180x1260.
соответственно, верх картинки уплывает.
ковырялся с пут, там понятно, что картинку можно поставить в любое место экрана, а вот как отрисовать часть картинки?
проще говоря, мне надо, чтоб при первоначальной отрисовке, показывался верх картинки, по оси y do 1200, нажал стрелку в низ, она подвинулась на 10 пикселей.
а вот если есть функция прокрутки самого экрана, это вообще вещь. так как я снимаю координаты по пикселям, и если начну перерисовывать картинку, придётся эти моменты учитывать.

electrik

Сообщения : 394
Дата регистрации : 2008-09-02
Возраст : 36
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  trew в Вт Июн 19, 2012 6:49 pm

electrik пишет:привет. мои успехи с программой отличные. уже выводим графику на брайлевскую печать.
теперь маленькая заморочка. так захотелось человеку, и мы работаем в нестандартном разрешении - 1180x1260.
соответственно, верх картинки уплывает.
ковырялся с пут, там понятно, что картинку можно поставить в любое место экрана, а вот как отрисовать часть картинки?
проще говоря, мне надо, чтоб при первоначальной отрисовке, показывался верх картинки, по оси y do 1200, нажал стрелку в низ, она подвинулась на 10 пикселей.
а вот если есть функция прокрутки самого экрана, это вообще вещь. так как я снимаю координаты по пикселям, и если начну перерисовывать картинку, придётся эти моменты учитывать.

Не вижу проблем с отрисовкой картинки. Ведь можно и в минусовых координатах картинку ставить. Это простой и самое главное действенный способ скроллинга. Может есть еще какие простые способы, но я их не вижу. Либо надо было с самого начала с помощью WinApi проект делать.

trew

Сообщения : 331
Дата регистрации : 2010-10-14

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  electrik в Ср Июн 20, 2012 10:28 am

я не знал что отрицательными координатами можно. но думал об этом. спасибо, буду пробовать.

electrik

Сообщения : 394
Дата регистрации : 2008-09-02
Возраст : 36
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: помогите нарисовать сетку с точками

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения