Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сперва чего то не рисует и как избавится от моргания

63K
08 августа 2011 года
maksimla
26 / / 25.07.2011
Здравствуйте у меня есть массив label и shape делаю сперва чтобы shape были в центре label и потом должно рисоваться но чего то не рисуются хотя выполнение есть.
Потом уже когда подвигали мышку все нормально рисуется
Код:
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)


Autoredraw = false
менял на истину то тогда рисует полоски и они под label а я хочю над ним
Ну и моргание есть как избавится от него?
278
08 августа 2011 года
Alexander92
1.1K / / 04.08.2008
По первому пункту не отвечу, ибо VB - не мое, а по второму (про моргание) - читайте про двойную буферизацию.
63K
08 августа 2011 года
maksimla
26 / / 25.07.2011
поискал и не нашел как в vb6 включить двойную буферизацию только нашел как сделать в vb.net
277
08 августа 2011 года
arrjj
1.7K / / 26.01.2011
Цитата: maksimla
поискал и не нашел как в vb6 включить двойную буферизацию только нашел как сделать в vb.net



А штатными средствами поидее никак, нужно самому реализовывать чтото похожее.

63K
08 августа 2011 года
maksimla
26 / / 25.07.2011
я чего то наверное совсем не понял как ее сделать.
Изображения менять местами чтоли?
сделал но быстрее всего неправильно

Код:
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

я вообще с буферизацией некогда не работал
327
08 августа 2011 года
UserNet2008
748 / / 03.04.2010
Цитата:
и еше насчет центра как нормально центр определить в label



примерно так

AutoSize = True
1) определить длину текста Len()
2) определить Label1.Font.Size
3) Len() * Size / 2

327
08 августа 2011 года
UserNet2008
748 / / 03.04.2010
Цитата:
При движение очень сильно моргает



Пробуйте, благо VB6 хорошо работает с API функциями
API функция BitBlt
Или штатный метод
Метод PaintPicture позваляет перемещать графические объекты не затрагивая фона.

63K
09 августа 2011 года
maksimla
26 / / 25.07.2011
Цитата: UserNet2008
примерно так

AutoSize = True
1) определить длину текста Len()
2) определить Label1.Font.Size
3) Len() * Size / 2



у меня там текста нету просто квадратик и все если AutoSize = True поставлю то тогда наверное пропадет label не будет видно как мне кажется хотя надо попробовать будит

63K
09 августа 2011 года
maksimla
26 / / 25.07.2011
Цитата: UserNet2008
Пробуйте, благо VB6 хорошо работает с API функциями
API функция BitBlt
Или штатный метод
Метод PaintPicture позваляет перемещать графические объекты не затрагивая фона.



к сожалению я пока API не знаю но все надо будит пробовать

327
09 августа 2011 года
UserNet2008
748 / / 03.04.2010
Цитата:
у меня там текста нету просто квадратик и все если AutoSize = True поставлю то тогда наверное пропадет label не будет видно как мне кажется хотя надо попробовать будит



AutoSize = True
Label1 = " " ' ставим пробел
или меняем Label на фигуру прямоугольник

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог