Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 | 3 |

 

  Вопрос: Вот тут несколько вопросов об Image Добавлено: 17.02.06 00:31  

Автор вопроса:  Эндрю | Web-сайт: www.пока_нет.ru | ICQ: 303-304-826 

Ответить

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

Номер ответа: 16
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #16
Добавлено: 20.02.06 10:28
ага прочитал, спасибо пожалуйста

Ответить

Номер ответа: 17
Автор ответа:
 Эндрю



ICQ: 303-304-826 

Вопросов: 24
Ответов: 103
 Web-сайт: www.пока_нет.ru
 Профиль | | #17
Добавлено: 21.02.06 00:21
[root]

а как воспользоваться АПИ IntersectRect?

HOOLIGAN

Спасибо, помогло. Но помогает только в том случае, если Image с большим индексом накладывается на Image с меньшим индексом. В противном случае ничего не происходит

Ответить

Номер ответа: 18
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #18 Добавлено: 21.02.06 00:35
Ну это только пример, как составить условие.
Нужно расширить его, дополнив всеми 4-мя возможными взаимоположениями имейджей.

А с IntersectRect точно так же - во вложенном цикле. Две переменные типа RECT, заносишь в них координаты сравниваемых имейджей и отдаешь эти переменные в IntersectRect.

Ответить

Номер ответа: 19
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #19 Добавлено: 21.02.06 00:48
Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpSrc1Rect As RECT, ByRef lpSrc2Rect As RECT) As Long
Private Declare Function SetRect Lib "user32.dll" (ByRef lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

    Dim Ri As RECT, Rj As RECT, R_inter As RECT
    Dim i As Long, j As Long
    For i = 0 To image1.Count - 1
        For j = 0 To image1.Count - 1
            SetRect Ri, image1(i).Left, image1(i).Top, image1(i).Left + image1(i).Width, image1(i).Top + image1(i).Height
            SetRect Rj, image1(j).Left, image1(j).Top, image1(j).Left + image1(j).Width, image1(j).Top + image1(j).Height
            If IntersectRect(R_inter, Ri, Rj) = 1 Then
                If (i <> j) Then
                    MsgBox "image " & i & "  - image " & j
                End If
            End If
        Next j
    Next i

Ответить

Номер ответа: 20
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #20
Добавлено: 21.02.06 07:36
Дык я не знаю, вот пример использования из API-Guide

Const RDW_INVALIDATE = &H1
Const BS_HATCHED = 2
Const HS_CROSS = 4
Private Type LOGBRUSH
    lbStyle As Long
    lbColor As Long
    lbHatch As Long
End Type
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Declare Function CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetRectEmpty Lib "user32" (lpRect As RECT) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function IsRectEmpty Lib "user32" (lpRect As RECT) As Long
Private Declare Function IntersectRect Lib "user32" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
Private Declare Function RedrawWindow Lib "user32" (ByVal hwnd As Long, lprcUpdate As Any, ByVal hrgnUpdate As Long, ByVal fuRedraw As Long) As Long
Private Declare Function GetRgnBox Lib "gdi32" (ByVal hRgn As Long, lpRect As RECT) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Check if this window is a window
    If IsWindow(Me.hwnd) = 0 Then
        MsgBox "Hmm.. I hope you altered the code, or else your system is meeting with difficulties!", vbInformation
    End If
    'API uses pixels
    Me.ScaleMode = vbPixels
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    'Redraw this window (invoke a Paint-event)
    RedrawWindow Me.hwnd, ByVal 0&, ByVal 0&, RDW_INVALIDATE
End Sub
Private Sub Form_Paint()
    Dim LB As LOGBRUSH, R As RECT, Rgn As Long, RgnRect As RECT, hBrush As Long
    'randomize
    Randomize Timer
    LB.lbColor = RGB(Int(Rnd * 256), Int(Rnd * 256), Int(Rnd * 256))
    LB.lbStyle = BS_HATCHED
    LB.lbHatch = HS_CROSS
    'Create a new brush
    hBrush = CreateBrushIndirect(LB)
    'Set the rectangle's values
    SetRect R, 0, 0, 200, 200
    'Create a rectangle region
    Rgn = CreateRectRgn(100, 50, 300, 10)
    'Get the region box
    GetRgnBox Rgn, RgnRect
    'calculate the intersection of two rectangles
    IntersectRect R, RgnRect, R
    'Empty the rectangle
    SetRectEmpty RgnRect
    'Fill our rectangle
    FillRect Me.hdc, R, hBrush
    'delete our brush
    ;DeleteObject hBrush
    'Check if the rectangle is empty
    If IsRectEmpty(RgnRect) <> 0 Then SetRectEmpty RgnRect
End Sub


Ответить

Номер ответа: 21
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #21 Добавлено: 22.02.06 21:40
Если нужны пересечения непосредственно объектов на картинках могу помочь

Ответить

Номер ответа: 22
Автор ответа:
 Эндрю



ICQ: 303-304-826 

Вопросов: 24
Ответов: 103
 Web-сайт: www.пока_нет.ru
 Профиль | | #22
Добавлено: 23.02.06 00:12
В С Е М

Спасибо всем кто по существу ответил на заданные мною вопросы.

Fever

Что именно ты имеешь ввиду?

Ответить

Номер ответа: 23
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #23 Добавлено: 23.02.06 21:56
Есть два кружка в квадратных imageах. Можно найти пересечение кругов, а не имагов. Быстро.

Ответить

Номер ответа: 24
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #24 Добавлено: 23.02.06 23:19
центр всёравно будет один, радиус тоже найти много ума ненадо, а
пересечение на algolist.manual.ru

Ответить

Номер ответа: 25
Автор ответа:
 Эндрю



ICQ: 303-304-826 

Вопросов: 24
Ответов: 103
 Web-сайт: www.пока_нет.ru
 Профиль | | #25
Добавлено: 24.02.06 00:36
Fever

А можно ли так:
В имейджах находятся нестандартные картинки (т.е. не квадратные), и нужно чтобы прога определила что пересекаются картинки, а не имейджи?

HACKER

А если его нету? :-)

Вопрос не в тему

Как сделать так, чтобы прога проигрывала системный звук (тот который проигрывается при MsgBox)? При этом сам MsgBox не нужен.

Ответить

Номер ответа: 26
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #26
Добавлено: 24.02.06 09:00
Beep

Ответить

Номер ответа: 27
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #27
Добавлено: 24.02.06 09:05
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Пример:
sndPlaySound "C:\youpath\vavchik.wav", 1


Ответить

Номер ответа: 28
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #28 Добавлено: 24.02.06 16:17
нету кого? Центра, радиуса, имиджа?

Ответить

Номер ответа: 29
Автор ответа:
 Эндрю



ICQ: 303-304-826 

Вопросов: 24
Ответов: 103
 Web-сайт: www.пока_нет.ru
 Профиль | | #29
Добавлено: 25.02.06 00:21
[root]

По Вашему примеру я должен на диск С запихнуть файл vavchik.wav. А мне то нужно чтобы проигрывался виндовский звук, который где-то запрятан в папке WINDOWS.

HACKER

ума...

Ещё один вопрос не тему

В своей проге сделал так, что звук проигрывается с помощью DirectSound. Но при этом в коде обязательно должна быть строчка:
ds.SetCooperativeLevel Form1.hWnd, DSSCL_NORMAL
Она отвечает за то, на какой форме будет проигрываться звук(здесь Form1). Но когда Form1 становится не активным то звук перестаёт воспроизводиться. Может поможете решить эту проблему?
PS Не спрашивайте почему я использовал DirectSound - так надо.

Ответить

Номер ответа: 30
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #30 Добавлено: 25.02.06 01:52
HACKER

ума...

возьми в арендку :))))))))))))))

Ответить

Страница: 1 | 2 | 3 |

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



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