Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: DirectX и мышь Добавлено: 19.04.05 15:29  

Автор вопроса:  Skywalker | Web-сайт: iSkywalker.ru | ICQ: 300-70-6пятьЪ 

Public MouseX As Integer
Public MouseY As Integer
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MouseX = Int(X)
    MouseY = Int(Y)
End Sub
Public Sub DrawMouse(ByVal MX As Long, ByVal MY As Long, ByVal Size As Long)
    rc.Top = MY
    rc.Left = MX
    rc.Bottom = MY + Size
    rc.Right = MX + Size
    Call ddsBack.BltFast(MouseX, MouseY, ddsMouse, rc, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT)
End Sub



Вот эта функция рисует вместо стандартной мыши мышь, загруженную из рисунка. Проблема вот в чем. При создании директиксом экрана с разрешением 640*480 все нормально, 800*600 тоже, а вот при 1024*768 рисунок мыши загружается и стоит на месте. Не подскажете в чем проюлема?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #1 Добавлено: 19.04.05 21:05
Форму ресайзишь?

Лично я в DX получал через GetCursorPos
ты типа хочешь курсор другой сделать? Тогда не лучше ли его просто поменять. Ато так от FPS будет зависеть.

Ответить

Номер ответа: 2
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #2 Добавлено: 19.04.05 21:07
BONUS
Оптимизация. + 1руб в копилку быстродействия.

Ответить

Номер ответа: 3
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #3 Добавлено: 19.04.05 21:14
Public Sub DrawMouse(ByVal MX As Long, ByVal MY As Long, ByVal Size As Long)
    rc.Top = MY
    rc.Left = MX
    rc.Bottom = MY + Size
    rc.Right = MX + Size
    Call ddsBack.BltFast(MouseX, MouseY, ddsMouse, rc, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT)
End Sub

Не забудь rc.Bottom & rc.Right менять на случай rc.Botton>SCREEN_HEIGHT; rc.right > SCREEN_WIDTH .
Если одна из этих заповедей не соблюдЁтся,то не будет рисовать.

П.С. Вот только как поменять курсор на "*.ani" не знаю.

Ответить

Номер ответа: 4
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #4
Добавлено: 20.04.05 08:02
Ну да я хочу свой курсор сделать. Поменять его просто мне не нада, потому что он в разных местах должен изменяться и загрузка из картинок будет удобней. Так я что-то не понял в чем у меня проблема?

Ответить

Номер ответа: 5
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #5 Добавлено: 20.04.05 20:27
Я не знаю в чём может быть проба. Ведь это просто. Привиди код.

Ответить

Номер ответа: 6
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #6 Добавлено: 20.04.05 20:30
 Кстати:

Public Sub DrawMouse(ByVal MX As Long, ByVal MY As Long, ByVal Size As Long)
    rc.Top = MY
    rc.Left = MX
    rc.Bottom = MY + Size
    rc.Right = MX + Size
    Call ddsBack.BltFast(MouseX, MouseY, ddsMouse, rc, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT)
End Sub

можно сделать

Public Sub DrawMouse(ByVal MX As Long, ByVal MY As Long, ByVal Size As Long)
    if ddsBack.BltFast (MouseX, MouseY, ddsMouse, rc, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT) then beep
End Sub



Если RC.all=0 тогда без проблем прорисуется. Я не знаю я составил своё: всё нормально. Мож те на мэйл кинуть? Сравнишь.

Ответить

Номер ответа: 7
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #7 Добавлено: 20.04.05 20:34

Мда.. Это нелегко но всё-же я так делал. если блт возвращает не 0, то я жму Ф2, и в ошибках DDRAW_ERRDRAW ищу ошибку с таким же номером. Это правда было когда меня уже просто бесить начинала.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам