FreeBasic
Главная
Вход
Регистрация
Понедельник, 30.12.2024, 20:02Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Вопрос по выводу изображения на экран
KenshinДата: Понедельник, 07.03.2016, 21:11 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Offline
Доброго времени суток!
Подскажите каким способом можно перемещать изображение с зажатой левой клавишей мыши, если оно полностью не помещается на экране. Изображение построено с помощью line
 
haavДата: Вторник, 08.03.2016, 08:39 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Вот одна из самых примитивных реализаций:

Код
#Include "fbgfx.bi"
#If __FB_LANG__ = "fb"
    Using fb
#EndIf

Screen 14,32,2
ScreenSet 1
SetMouse ,,,1

Dim Shared image As Any Ptr
Dim Shared As Integer w = 300,h = 300
image = ImageCreate( w, h, RGB(0, 128, 0) )
Dim Shared As Integer xImg = 120, yImg = 60, iFlag

If image = 0 Then
    Print "Failed to create image."
    Sleep
    End -1
End If

Put (xImg, yImg), image, PSet

Function MouseIn() As Integer
    Dim e As event
    If (ScreenEvent(@e)) Then
  Select Case e.type
   Case EVENT_MOUSE_MOVE
    If iFlag = 1 Then
     If e.x > xImg  AndAlso e.x < (xImg+w) Then
      If e.y > yImg AndAlso e.y < (yImg + h) Then
       xImg+=e.dx
       yImg+=e.dy
      EndIf
     EndIf
    EndIf
   Case EVENT_MOUSE_BUTTON_PRESS
    If (e.button = BUTTON_LEFT) Then
     iFlag = 1
    End If
   Case EVENT_MOUSE_BUTTON_RELEASE
    iFlag = 0
  End Select
    EndIf
    Cls
    Put (xImg, yImg), image, PSet
    PCopy
End Function

Do
    MouseIn()
    Sleep 1
Loop Until MultiKey(1) 'ESC для выхода


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
KenshinДата: Среда, 09.03.2016, 12:05 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 3
Репутация: 0
Статус: Offline
Огромное спасибо!
Пишу программу для математической обработки чертежей в формате dxf. Программированием владею на уровне непрофильного института и разобраться в некоторых моментах сложновато.

Добавлено (09.03.2016, 12:05)
---------------------------------------------
Можно ли как то масштабировать это же изображение колесиком мыши?

Сообщение отредактировал Kenshin - Среда, 09.03.2016, 12:04
 
haavДата: Среда, 09.03.2016, 13:04 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Цитата Kenshin ()
Можно ли как то масштабировать это же изображение колесиком мыши?


Конечно можно.

Вот ссылки в которых можно найти примеры масштабирования:

http://free-basic.ru/resize.html
http://free-basic.ru/alpha32.html

Ну а про колесико мыши... В справке есть описание функции ScreenEvent , в ней есть пример отлавливания событий клавиатуры и мыши, в том числе колесика мыши (событие EVENT_MOUSE_WHEEL). Запусти пример , покрути колесо туда-сюда и поймешь как нужно работать с данным событием.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Среда, 09.03.2016, 21:53 | Сообщение # 5
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата Kenshin ()
Пишу программу для математической обработки чертежей в формате dxf. Программированием владею на уровне непрофильного института и разобраться в некоторых моментах сложновато.
Возможно, имеет смысл перейти от fbgfx на библиотеки IUP и FLTK, там гораздо больше возможностей для создания полноценной программы.
 
  • Страница 1 из 1
  • 1
Поиск: