Страница: 1 | 2 | 3 |
Вопрос: Вот тут несколько вопросов об Image
Добавлено: 17.02.06 00:31
Автор вопроса: Эндрю | Web-сайт:
Ответы
Всего ответов: 31
Номер ответа: 16
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #16
Добавлено: 20.02.06 10:28
ага прочитал, спасибо пожалуйста
Номер ответа: 17
Автор ответа:
Эндрю
ICQ: 303-304-826
Вопросов: 24
Ответов: 103
Web-сайт:
Профиль | | #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 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-сайт:
Профиль | | #20
Добавлено: 21.02.06 07:36
Дык я не знаю, вот пример использования из API-Guide
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
 eleteObject 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-сайт:
Профиль | | #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-сайт:
Профиль | | #25
Добавлено: 24.02.06 00:36
Fever
А можно ли так:
В имейджах находятся нестандартные картинки (т.е. не квадратные), и нужно чтобы прога определила что пересекаются картинки, а не имейджи?
HACKER
А если его нету?
Вопрос не в тему
Как сделать так, чтобы прога проигрывала системный звук (тот который проигрывается при MsgBox)? При этом сам MsgBox не нужен.
Номер ответа: 26
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #26
Добавлено: 24.02.06 09:00
Beep
Номер ответа: 27
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #27
Добавлено: 24.02.06 09:05
Пример:
Номер ответа: 28
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #28
Добавлено: 24.02.06 16:17
нету кого? Центра, радиуса, имиджа?
Номер ответа: 29
Автор ответа:
Эндрю
ICQ: 303-304-826
Вопросов: 24
Ответов: 103
Web-сайт:
Профиль | | #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
ума...
возьми в арендку )))))))))))))