Прямоугольник Выделение на PictureBox'е

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
_Vasya
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 28.02.2004 (Сб) 21:21

Прямоугольник Выделение на PictureBox'е

Сообщение _Vasya » 28.02.2004 (Сб) 23:06

Как на PictureBox'е отобразить прямоугольник выделения при перетаскивании мыши, как например на рабочем столе при выделении ярлыков. Пожалуйста помогите, срочно нужно!!!

difri
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 27.02.2004 (Пт) 12:13

Re: Прямоугольник Выделение на PictureBox'е

Сообщение difri » 29.02.2004 (Вс) 11:54

Помещаешь на PictureBox1 контрол shape1
Код: Выделить всё
Dim x1, y1

Private Sub Form_Load()
   Shape1.BorderStyle = 3
   Shape1.Visible = False
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   x1 = X
   y1 = Y
   With Shape1
     .Left = X
      .Top = Y
      .Width = 1
      .Height = 1
      .Visible = True
   End With
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Shape1.Width = Abs(X - x1)
   Shape1.Height = Abs(Y - y1)
   If (x1 > X) Then Shape1.Left = x1 - Shape1.Width Else Shape1.Left = x1
   If (y1 > Y) Then Shape1.Top = y1 - Shape1.Height Else Shape1.Top = y1
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Shape1.Visible = False
End Sub

_Vasya
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 28.02.2004 (Сб) 21:21

Re: Прямоугольник Выделение на PictureBox'е

Сообщение _Vasya » 29.02.2004 (Вс) 16:49

Спасибо, но по моему должна быть какая-то стандартная функция из API правда не знаю какая. А этот способ я знал, но мне не очень подходит.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 29.02.2004 (Вс) 19:24

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

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

_Vasya
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 28.02.2004 (Сб) 21:21

Сообщение _Vasya » 29.02.2004 (Вс) 22:37

А в какой библиотечке она находится и что означают ее параметры и что она возвращает :?: :?: :?:

difri
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 27.02.2004 (Пт) 12:13

Сообщение difri » 01.03.2004 (Пн) 22:51

Извеняюсь :!: , но я недавно начал программировать
и другого способа не знаю :roll: .

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.03.2004 (Вт) 10:14

Посмотри API DrawFocusRect, помоему тебе нужно именно это.
Lasciate ogni speranza, voi ch'entrate.

_Vasya
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 28.02.2004 (Сб) 21:21

Сообщение _Vasya » 02.03.2004 (Вт) 22:31

:) Спасибо, щас буде посмотреть.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 02.03.2004 (Вт) 22:42

API-Guide писал(а):Declaration:
Код: Выделить всё
Declare Function DrawFocusRect Lib "user32" Alias "DrawFocusRect" (ByVal hdc As Long, lpRect As RECT) As Long


Description:
The DrawFocusRect function draws a rectangle in the style used to indicate that the rectangle has the focus.

Parameters:

· hDC
Identifies the device context.

· lprc
Points to a RECT structure that specifies the logical coordinates of the rectangle.

Return Value:
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Sample:
Код: Выделить всё
Const DC_ACTIVE = &H1
Const DC_NOTACTIVE = &H2
Const DC_ICON = &H4
Const DC_TEXT = &H8
Const BDR_SUNKENOUTER = &H2
Const BDR_RAISEDINNER = &H4
Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Const BF_BOTTOM = &H8
Const BF_LEFT = &H1
Const BF_RIGHT = &H4
Const BF_TOP = &H2
Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
Const DFC_BUTTON = 4
Const DFC_POPUPMENU = 5            'Only Win98/2000 !!
Const DFCS_BUTTON3STATE = &H10
Const DT_CENTER = &H1
Const DC_GRADIENT = &H20          'Only Win98/2000 !!
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Declare Function DrawCaption Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long, pcRect As RECT, ByVal un As Long) As Long
Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long
Private Declare Function DrawFrameControl Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal un1 As Long, ByVal un2 As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) 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 OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Paint()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim R As RECT
    'Clear the form
    Me.Cls
    'API uses pixels
    Me.ScaleMode = vbPixels
    'Set the rectangle's values
    SetRect R, 0, 0, Me.ScaleWidth, 20
    'Draw a caption on the form
    DrawCaption Me.hWnd, Me.hdc, R, DC_ACTIVE Or DC_ICON Or DC_TEXT Or DC_GRADIENT
    'Move the recatangle
    OffsetRect R, 0, 22
    'Draw an edge on our window
    DrawEdge Me.hdc, R, EDGE_ETCHED, BF_RECT
    OffsetRect R, 0, 22
    'Draw a focus rectangle on our window
    DrawFocusRect Me.hdc, R
    OffsetRect R, 0, 22
    'Draw a frame control on our window
    DrawFrameControl Me.hdc, R, DFC_BUTTON, DFCS_BUTTON3STATE
    OffsetRect R, 0, 22
    'draw some text on our form
    DrawText Me.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER
End Sub

Нет меня больше


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 10

    TopList