Как создать свою программу для рисования

Всем привет, это у нас очередной урок по созданию приложений для операционной системы андроид с помощью среды разработки Android Studio.

Начнем создавать необходимые классы для работы приложения и я вам по ходу дела буду объяснять что к чему!

FingerPath.java

FingerPath.java это простой класс который будет сохранять в себе элементы которые мы будем менять, такие как размер кисточки, цвет и.т.д

import android.graphics.Path;

public class FingerPath
public int color;
public boolean emboss;
public boolean blur;
public int strokeWidth;
public Path path;

public FingerPath(int color, boolean emboss, boolean blur, int strokeWidth, Path path) this.color = color;
this.emboss = emboss;
this.blur = blur;
this.strokeWidth = strokeWidth;
this.path = path;
>
>

PaintView.java

PaintView.java это наше “custom” View. Простыми словами это View которое мы сами создадим. Данный класс и будет являться холстом.Этот класс отвечает за рисование на экране размер холста и многое другое. В данном классе мы также обрабатываем прикосновение пальца к экрану и рисуем согласно координатам полученным от сенсорного экрана.

ТОП 5 ПРОГРАММ ДЛЯ РИСОВАНИЯ МАНГИ И КОМИКСОВ (перезалив)

Источник: neco-desarrollo.es

Создание мобильного приложения для рисования на Android Studio

Или как не сойти с ума в поисках решения простейшей проблемы будучи новичком.

В один ужасный день мой научный руководитель предложил мне поработать над одним проектом. Я не буду вдаваться в подробности, но каркасом для будущего мобильного приложения должно было служить приложение для рисования пальцем на экране смартфона. Я согласился. На следующий день, в поисках решения в русскоязычном сегменте интернета я сдался.

Еще через день, я прибегнул к страшной черной магии. Я загуглил вопрос на английском. И даже в данной среде я нашел лишь небольшое количество информации, но там я встретил своего учителя-ситха. Он научил меня многому, но и многое для создания этого приложения было предпринято мною лично.

Я не думаю, что данную статью будут читать профессиональные разрабы (иначе меня забросают помидорами). Статья в первую очередь нужна для новичков. Здесь не будет глубоких разъяснений почему так или не так. Здесь не будет самописных библиотек или чего-то заумного. Новичкам стоит лишь повторять то что написано в статье как в алгоритме.

Читайте также:
Как удалить программу в xp

Для тех кто хочет видеть это в видео-формате от индуса, в конце статьи будет ссылка. Опытным Джавистам и разрабам на Андроид Студио — большое спасибо что уделяете внимание новичкам, будем благодарны за помощь и совет.

Рисовать аниме проще, чем ты думаешь

Для начала о ресурсах которые мы будем использовать. Наш друг из Индии любезно заготовил нам пару картинок в .xml формате и дал на них ссылку под видео, оригинальная ссылка на его гугл диск работать перестала, поэтому для вас будет его копия.
https://drive.google.com/drive/folders/1lv3pwm4YSr1q-LdTnvdQSvCvWImRg7ow?usp=sharing

Далее-библиотеки. Нам нужны библиотеки:

  • SignatureView, которая собственно и будет позволять нам рисовать на экране https://github.com/zahid-ali-shah/SignatureView
  • AmbilWarna для выбора цвета нашей «ручки».
    https://github.com/yukuku/ambilwarna Наш азиатский друг эту тему не затрагивал, но есть некоторые сложности с их подключением, о которых речь пойдет далее.

В основном алгоритм их подключения и не сильно от остальных отличается. Берем те зависимости которые указаны в описании библиотеки на гитхабе, в нашем случае это зависимости: ‘com.github.yukuku:ambilwarna:2.0.1’ и ‘com.kyanogen.signatureview:signature-view:1.2’. Заходим в Андроид студио, во ВТОРОЙ файл build.grandle(Module :app) и при помощи «implementation» вписываем две эти зависимости в dependencies.

Примерно таким образом.

Но, как и в анекдоте про Чапая и Петьку, есть нюанс. Библиотека SignatureView так просто не заработает. Заходим в файл settings.grandle и, первое, дописываем в repositiories jcenter(), второе, в конце файла приписываем include ‘SignatureView-Example’, ‘signature-view’

Примерно так.

(Только что вы сделали за пару минут то, что мой хилый мозг придумывал пол для.) После чего, мы все это дело синхронизируем, при помощи кнопки «Sync now» в правом верхнем углу. Ура, библиотеки подключены!

Теперь к объектам на сцене. Можете забить на режим дизайна, сразу переключайтесь либо в сплит (чтобы сразу видеть что меняется на сцене), либо в режим кода. Удаляйте TextView и замените те страшные строчки в самом первом объекте на Relative Layout.

Читайте также:
Какие программы блокируют незнакомые номера

Вот так.

Возвращаемся к нашему SignatureView на гитхабе и копируем следующие строки, вставляем в пространство между RelativeLayout:

Уже этот кусок кода позволит нам рисовать на экране.

Таким вот образом

Отвлечемся на секунду для того, чтобы закинуть ассеты картинок. В папку drawable, что находится в папке res, закидываем наши скачанные ассеты. Готово, теперь в ресурсах будут отображаться 2 эти картинки.

Обратно к Xml. Теперь надо сделать панельку с кнопками и другими управляющими элементами. Для этого будем использовать:

  • Слайдер для увеличения/уменьшения кисти
  • 2 кнопки. Одна меняет цвет нашей кисти, вторая стирает все что было нарисовано.

Создаем LinearLayout со следующими параметрами:

и еще 2 внутри него с:

android_layout_width=»match_parent» android_layout_height=»wrap_content» android_layout_weight=»1″ android_layout_margin=»4dp» //для первого
android_layout_gravity=»end» android_layout_width=»match_parent» android_layout_height=»wrap_content» android_layout_weight=»1″ android_layout_margin=»4dp» //для второго

Самый главный Linear нам нужен для того чтобы обернуть в него 2 другие. Первый будет содержать слайдер, второй — 2 кнопки.

Вот таким вот образом.

Переключаем все внимание на первый внутренний Linear. В нем надо создать SeekBar и TextView. Итоговый вариант первого внутреннего Linear’a:

При работе в режиме сплит вы увидите следующее:

Ко второму Linear’у. Создаем 2 ImageButton, со следующими параметрами. Для первого:

Итоговый вариант Xml кода:

Сам интерфейс программы будет таким:

Ура, мы закончили с интерфейсом! Устали? Я тоже, но осталось чуть-чуть (нет).

Теперь к любимой части, java коду.

Для начала импорт необходимого всего(библиотек):

import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.SeekBar; import android.widget.TextView; import com.kyanogen.signatureview.SignatureView; import yuku.ambilwarna.AmbilWarnaDialog;

Теперь объявляем все переменные, необходимые нам:

SignatureView signatureView;// объект для того чтобы рисовать ImageButton imgEraser,imgColor;// 2 объекта кнопок SeekBar seekBar;// слайдбар для изменения размера ручки TextView txtpensize;// текст для пояснения int defaultcolor;// стандартный цвет который мы используем на данный момент

Ну а теперь крепим все это к объектам из .XML, через ID-шников, которые мы им уже дали в коде XML

signatureView=findViewById(R.id.signature_view);//метод findViewById делает возможным поиск по айди элемента в XML imgEraser=findViewById(R.id.btnEraser); imgColor= findViewById(R.id.btnColor); seekBar=findViewById(R.id.penSize); txtpensize=findViewById(R.id.TxtPenSize); defaultcolor= ContextCompat.getColor(MainActivity.this,R.color.black);//просто черный цвет

Читайте также:
Первой интеллектуальной системой ис считается программа

Далее к основному коду. Для начала Seek Bar. Обращаемся к seekBar.setOnSeekBarChangeListener и видим следующую картину:

Здесь нам нужена только функция onProgressChanged, где мы пишем следующие строки:

txtpensize.setText(progress+»dp»);//то что мы будем видеть как подсказку signatureView.setPenSize(progress);//смена размера кисти через функции библиотеки seekBar.setMax(50);//максимальное значение seekbara

Далее кнопка для стирания всего с экрана. Для этого обращаемся к imgEraser.setOnClickListener, а точнее к функции внутри него — public void onClick(View v) после чего пишем- signatureView.clearCanvas();. По итогу мы получим:

Теперь к смене цвета. Для начала, за пределами функции OnCreate, создаем функцию openColorPicker. Создаем там новый AmbilWarnaDialog:

AmbilWarnaDialog ambilWarnaDialog = new AmbilWarnaDialog(this, defaultcolor, new AmbilWarnaDialog.OnAmbilWarnaListener()

Дополняем все это безобразие следующими строками:

Теперь вернемся к функции OnCreate и дополняем его следующими строками для вызовы данной функции и смены цвета:

Ура! Вы сделали приложение для простейшего рисования для андроид устройств (меня наконец-то покормят!). Осталось только скомпилировать код и установить на любое андроид устройство.

Извиняюсь за ублюдский шортс, ютуб не дает сохранить видео не в формате шортс(:). На моей демонстрации черный цвет из-за темы телефона (инверсия цветов), на ваших устройствах все будет ОК.

Источник: temofeev.ru

Библиотека Tkinter: Разработка программы Paint

В этой статье мы разработаем простую «рисовалку» на Python. Программа будет примитивная, но мы потренируемся в создании макетов компоновки в tkinter, передаче аргументов в функцию-обработчик, а также применим анонимные функции.

Класс Paint

В нашей программе мы будем применять ООП и поэтому создаем класс и называем его «Paint». Листинг:

from tkinter import * from tkinter.messagebox import * # класс Paint class Paint(Frame): def __init__(self, parent): Frame.__init__(self, parent) self.parent = parent # выход из программы def close_win(): if askyesno(«Выход», «Вы уверены?»): root.destroy() # вывод справки def about(): showinfo(«Demo Paint», «Простейшая рисовалка от сайта: https://it-black.ru») # функция для создания главного окна def main(): global root root = Tk() root.geometry(«800×600+300+300″) app = Paint(root) m = Menu(root) root.config(menu=m) fm = Menu(m) m.add_cascade(label=»Файл», menu=fm) fm.add_command(label=»Выход», command=close_win) hm = Menu(m) m.add_cascade(label=»Справка», menu=hm) hm.add_command(label=»О программе», command=about) root.mainloop() if __name__ == «__main__»: main()

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru