IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Рисование в Visual Basic 6.0 (http://www.imho.ws/showthread.php?t=101219)

mafia 23.03.2006 18:04

Рисование в Visual Basic 6.0
 
Как и чем (компанент) реализовать рисование мышью в VB6?

А точнее нужна матрица (расчерченый квадтат где-то 10Х10 или можно 20Х20) и чтобы при наведении мышки с нажатой левой кнопкой заполнялась ячейка под указателем мышки. Это нужно для того, чтобы закрашенные ячейки в матрице стали 1, а не закрашеные 0.

Вопрос: как и чем?

mafia 28.03.2006 13:16

как рисовать вроде немного разобрался, но вот теперь возник другой вопрос: как сделать так, чтобы мышь опрашивалась почаще, а то если рисоавть тем методом, что я указал, то при резких движениях большие зазоры остаются. То есть рисовать нада по латышски ;)
где копать?
а вот листинк проги для простого рисования на форме:
Цитата:

Dim risov As Boolean
Dim flag As Byte
Private Sub Command1_Click()
flag = 1
End Sub
Private Sub Command2_Click()
flag = 2
End Sub

Private Sub Command3_Click()
flag = 3
End Sub

Private Sub Command4_Click()
Cls
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
risov = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If risov = True Then
If flag = 1 Then PSet (X, Y)
If flag = 2 Then Line (X, Y)-((X - 50), (Y - 50))
If flag = 3 Then Line (X, Y)-(X - 10, Y - 100)
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
risov = False
End Sub

Nerey_ser 30.03.2006 20:43

Я не сильно разобрался, что означают flag=2 и flag=3. Однако исправить ошибку можно так:

Сохранять пердыдущее положение мыши в отдельных переменных. Потом вместо рисования точки рисовать линию от старой (сохранённой) позиции курсора до новой.

Такой способ даёт ошибку если рисовать дугу быстро - она становиться ломаной. Но такая ошбка есть даже в Paint...

А вообще, впервые вижу програмиста Бейсика. :yees:

mafia 30.03.2006 21:05

флаги нужны для выбора так сказать инструмента рисования (круг, прямоугольник, точка)...
вобще ответ нашел такой.. нужно рисовать в picturebox там мол быстро будет.

но теперь у меня возник другой вопрос. как закрасить замкнутую поверхность в VB.
уже долго не могу найти ответа.. помогите!!!

Nerey_ser 31.03.2006 18:24

Я тоже не знаю. Сам мучался. :( Попробуй вручную алгоритм сбацать.

UriF 31.03.2006 21:10

посмотри здесь
http://vbnet.mvps.org/index.html?cod...api/index.html

кроме того есть книга (если выкладывать код, то это страниц ок. 50)
Win32 API Programming with Visual basic
Steven Roman (www.oreilly.com)
ISBN 1-56592-631-5
там все объяснено

mafia 01.04.2006 02:50

Цитата:

Сообщение от UriF
посмотри здесь
http://vbnet.mvps.org/index.html?cod...api/index.html

кроме того есть книга (если выкладывать код, то это страниц ок. 50)
Win32 API Programming with Visual basic
Steven Roman (www.oreilly.com)
ISBN 1-56592-631-5
там все объяснено

хм.. английский знаю на хорошем уровне, но столько программерских терминов.. пока рановато ;)
но за ресурс спасибо...

проблему закрашивания так и не решил. пока выхожу рисованием "жирной кистью" (но желательно именно залить замкнутую область)

UriF 01.04.2006 05:51

примеры из этой книги (если поможет)
Вам будет легко читать эту книгу, если Вы немного знакомы с C/C++.
Даже если нет, то эта книга позволит изменить Ваше мировоззрение и стать экспертом в VB, легче перейти на другие языки, да и с легкостью работать с подобными сайтами

http://examples.oreilly.com/win32api/

http://rapidshare.de/files/16973720/Sample.rar.html

mafia 01.04.2006 11:20

книга опять таки на английском языке. есть ли подобные ресурсы на русском? или перевод этой книги?
(очень хочется стать знатоком VB :) )


Часовой пояс GMT +4, время: 04:53.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.