Программирование
Веб программирование

Делаем простой графический редактор

 
 

Наш графический редактор будет уметь:

  1. изменять размер мазка
  2. настраивать цвет
  3. очищать графическое поле

Разместим на форме PictureBox, TextBox с атрибутом Text = 8, подключаем Common Dialog, даём ему имя dlg, и две кнопки с надписями Цвет и Очистить.

Пишем код:

Private Sub Command1_Click()
With dlg
    .ShowColor
Picture1.ForeColor = .Color
End With
End Sub

Private Sub Command2_Click()
Picture1.Cls
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
intPrevX = X
intPrevY = Y
End If
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.DrawWidth = Text1.Text
Picture1.Line (intPrevX, intPrevY)-(X, Y)
End If

intPrevX = X
intPrevY = Y
End Sub

Запускаем. В Text1 вписываем размер мазка

Задание: Доработать проект так, чтобы вместо текстового поля был combobox с вариантами размера.

Исходник:Скачать файл [5355 кб]


Есть вопросы? Спроси на нашем форуме!!
zm2003160 [17.03.2013 15:55]

Я недописал код.Если в текстовом поле написать 0, то будет ошибка
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
On Error Resume Next
Picture1.DrawWidth = Text1.Text
Picture1.Line (intPrevX, intPrevY)-(X, Y)
End If
intPrevX = X
intPrevY = Y
End Sub

alex13sh300 [17.03.2013 23:22]

zm200360, зачем при каждой ошибки писать игнор ошибок??
надо самому в ручную обрабатывать ошибку

if val(text1) >0 then
Picture1.DrawWidth = Text1.Text

...
end if
или
if val(text1) =0 then exit sub
или
if val(text1) = 0 then text1=1

Matrix [19.03.2013 21:36]

h_ttp://yadi.sk/d/WJ0clMU23OLbk
Моя вариация на тему этого исходника =)

shqrec [28.03.2013 11:59]

Что делать ? Если хочу учится программированию нашел литературу нашел программу . А она на моей "Семерке" не прет (((

Coolhacker770 [28.03.2013 14:04]

Застрелись

Edward300 [22.12.2013 18:05]

Короче, весь мат, оффтопик я буду удалять, хотите вы этого или нет, а то новички скажут, чтото тут троллей много понаехало...

M161350 [22.12.2013 19:02]

А что значит оффтопик?

Edward300 [22.12.2013 19:20]

оффтопик, это разговор не по теме.

Sigma20 [10.07.2014 13:42]

В коде надо заменить Picture1.Line (intPrevX, intPrevY)-(X, Y)на Picture1.Line (intPrevX, intPrevY)-Step(X, Y), для того чтобы рисование начиналось в точке нажатия кнопки мыши и заканчивалось в момент отпускания кнопки. Иначе линия не получается.

pjp07190 [11.07.2014 10:12]

Иначе линия не получается.
Все решается проще. Просто автор забыл включить в код описание переменных Dim intPrevX, intPrevY as Integer

Sigma20 [12.07.2014 11:26]

Создатели VB наверно не просто так ввели Step. Мне кажется качество рисунка должно уменьшиться. Переменная Singl всё таки более точная, чем Integer.

pjp07190 [14.07.2014 11:16]

Какое может быть качество при рисовании мышкой.

werylazy20 [02.11.2015 05:56]

Интересно какова вероятность получить ответ в скором времени. Вопрос такой: как сделать так чтоб цвет выбирать нажатием на кнопку окрашенную в выбираемый цвет? (типа как в паинте)
И да. В коде надо заменить Picture1.Line (intPrevX, intPrevY)-(X, Y)на Picture1.Line (intPrevX, intPrevY)-Step(X, Y). Попробовал, а у меня такую лажу начал рисовать.
Еще буду премного благодарен если подскажете с формами кисти (трафареты: круг, квадрат, треугольник).
В каком направлении искать мне инфу обо всем об этом. Заранее спасибо!!!


werylazy20 [02.11.2015 05:56]

89083149000@ya.ru можно сюда отвечать если не затруднит :-)

werylazy20 [02.11.2015 06:03]

Хочется как у:

Matrix [19.03.2013 21:36]
h_ttp://yadi.sk/d/WJ0clMU23OLbk
Моя вариация на тему этого исходника =)

Только с трафаретами.

Matrix, а можно коды получить в дополнение к *.exe?

werylazy20 [02.11.2015 07:56]

Какая хорошая штука мозг. Всем спасибо разобрался сам что где к чему. Как допилю так обязательно выложу. А сейчас спать пойду.



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.