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

Ваш аккаунт

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

Последние темы форума

Показать новые сообщения »

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

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

Рисовать на PictureBox

76K
05 марта 2012 года
dflbv62
3 / / 07.01.2012
Рисую на пикчебоксе кривую линию при помощи такого кода:
Код:
Option Explicit
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Dim xt As Long, yt As Long

Private Sub Form_Load()
   Picture1.AutoRedraw = False
   Timer1.Interval = 1
   Timer1.Enabled = False
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
   Timer1.Enabled = True
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
   xt = x
   yt = y
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
   Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    SetPixel Picture1.hdc, xt, yt, vbRed
'    Picture1.PSet (xt, yt), vbRed
End Sub

Но сплошная линия получается, только если тянуть курсор очень медленно. Есть ли какой-нибудь другой способ? Заранее благодарен.
247
10 марта 2012 года
pashulka
983 / / 19.09.2004
Вместо SetPixel/SetPixelV используйте функцию LineTo.

Разумеется, простой заменой Вам не обойтись, например, для того, чтобы получить красный цвет линии, необходимо предварительно : Me.ForeColor = vbRed, возможно также придётся "конвертировать" координаты (см. API функцию ScreenToClient)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

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