Dim PX, PY, TrRez, i As Integer
Const s = 7
Private Sub Form_Load()
For i = 0 To s - 1
Shape1(i).Top = Label1(i).Top + (Int(Label1(i).Height / 2) - 60)
Shape1(i).Left = Label1(i).Left + (Int(Label1(i).Width / 2) - 60)
Next i
pies
End Sub
Private Sub Form_Paint()
'pies
End Sub
Private Sub Label1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
TrRez = 1
PX = X
PY = Y
End Sub
Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If TrRez = 1 Then
Label1(Index).Left = Label1(Index).Left + X - PX
Label1(Index).Top = Label1(Index).Top + Y - PY
Shape1(Index).Top = Label1(Index).Top + (Int(Label1(Index).Height / 2) - 60)
Shape1(Index).Left = Label1(Index).Left + (Int(Label1(Index).Width / 2) - 60)
pies
End If
End Sub
Private Sub Label1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
TrRez = 0
End Sub
Private Sub pies()
Cls
For i = 0 To s - 2
For j = i + 1 To s - 1
Line ((Shape1(i).Left + Int(Shape1(i).Width / 2)), (Shape1(i).Top + Int(Shape1(i).Height / 2)))-((Shape1(j).Left + Int(Shape1(j).Width / 2)), (Shape1(j).Top + Int(Shape1(j).Height / 2)))
Next j
Next i
End Sub
Сперва чего то не рисует и как избавится от моргания
Потом уже когда подвигали мышку все нормально рисуется
Код:
При движение очень сильно моргает
и еше насчет центра как нормально центр определить в label
то у меня +60 вышло вот
Код:
Shape1(i).Top = Label1(i).Top + (Int(Label1(i).Height / 2) - 60)
Shape1(i).Left = Label1(i).Left + (Int(Label1(i).Width / 2) - 60)
Shape1(i).Left = Label1(i).Left + (Int(Label1(i).Width / 2) - 60)
Autoredraw = false
менял на истину то тогда рисует полоски и они под label а я хочю над ним
Ну и моргание есть как избавится от него?
По первому пункту не отвечу, ибо VB - не мое, а по второму (про моргание) - читайте про двойную буферизацию.
поискал и не нашел как в vb6 включить двойную буферизацию только нашел как сделать в vb.net
Цитата: maksimla
поискал и не нашел как в vb6 включить двойную буферизацию только нашел как сделать в vb.net
А штатными средствами поидее никак, нужно самому реализовывать чтото похожее.
Изображения менять местами чтоли?
сделал но быстрее всего неправильно
Код:
Dim PX, PY, TrRez As Integer
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
TrRez = 1
PX = X
PY = Y
End Sub
Private Sub Image1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If TrRez = 1 Then
If Index = 0 Then
Image1(Index + 1).Left = Image1(Index).Left + X - PX
Image1(Index + 1).Top = Image1(Index).Top + Y - PY
Image1(Index).Visible = False
Image1(Index + 1).Visible = True
Else
Image1(Index).Left = Image1(Index - 1).Left + X - PX
Image1(Index).Top = Image1(Index - 1).Top + Y - PY
Image1(Index - 1).Visible = False
Image1(Index).Visible = True
End If
End If
End Sub
Private Sub Image1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
TrRez = 0
End Sub
Private Sub Image1_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
TrRez = 1
PX = X
PY = Y
End Sub
Private Sub Image1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If TrRez = 1 Then
If Index = 0 Then
Image1(Index + 1).Left = Image1(Index).Left + X - PX
Image1(Index + 1).Top = Image1(Index).Top + Y - PY
Image1(Index).Visible = False
Image1(Index + 1).Visible = True
Else
Image1(Index).Left = Image1(Index - 1).Left + X - PX
Image1(Index).Top = Image1(Index - 1).Top + Y - PY
Image1(Index - 1).Visible = False
Image1(Index).Visible = True
End If
End If
End Sub
Private Sub Image1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
TrRez = 0
End Sub
я вообще с буферизацией некогда не работал
Цитата:
и еше насчет центра как нормально центр определить в label
примерно так
AutoSize = True
1) определить длину текста Len()
2) определить Label1.Font.Size
3) Len() * Size / 2
Цитата:
При движение очень сильно моргает
Пробуйте, благо VB6 хорошо работает с API функциями
API функция BitBlt
Или штатный метод
Метод PaintPicture позваляет перемещать графические объекты не затрагивая фона.
Цитата: UserNet2008
примерно так
AutoSize = True
1) определить длину текста Len()
2) определить Label1.Font.Size
3) Len() * Size / 2
AutoSize = True
1) определить длину текста Len()
2) определить Label1.Font.Size
3) Len() * Size / 2
у меня там текста нету просто квадратик и все если AutoSize = True поставлю то тогда наверное пропадет label не будет видно как мне кажется хотя надо попробовать будит
Цитата: UserNet2008
Пробуйте, благо VB6 хорошо работает с API функциями
API функция BitBlt
Или штатный метод
Метод PaintPicture позваляет перемещать графические объекты не затрагивая фона.
API функция BitBlt
Или штатный метод
Метод PaintPicture позваляет перемещать графические объекты не затрагивая фона.
к сожалению я пока API не знаю но все надо будит пробовать
Цитата:
у меня там текста нету просто квадратик и все если AutoSize = True поставлю то тогда наверное пропадет label не будет видно как мне кажется хотя надо попробовать будит
AutoSize = True
Label1 = " " ' ставим пробел
или меняем Label на фигуру прямоугольник