Русский
Русский
English
Статистика
Реклама

Desktop apps

Electron Разработка Desktop-приложений, используя HTML, CSS и JavaScript

11.01.2021 14:11:20 | Автор: admin
О чем вы узнаете из статьи?
Что такое Electron
Возможности и ограничения при разработке
Как работать с Electron
Плюсы и минусы
Известные проблемы
Вывод

Electron это библиотека, которую можно использовать для написания десктопных приложений с помощью html, css, js. Эти приложения могут быть упакованы под windows, mac, linux.

Возможно некоторые из вас уже использовали Electron даже не подозревая об этом!

Список некоторых приложений, написанных на Electron
Visual Studio Code
Atom
Skype
Discord
Slack
GitHub Desktop
Figma
Zeplin
Postman


Что можно создать?
приложение по работе с файлами
скрытые приложение ( Tray )
приложения для менеджмента ( tracker, pomodoro )
видео/аудио проигрыватели
социальные чаты
календарь

Любые ваши идеи, которые будут полезны вам или компании

Когда вы работаете с Electron вы должны помнить о некоторых ограничениях старые ОС:
а) Windows 7+
b) Mac OS 10.10+
c) Ubuntu 12.04+

Electron состоит из трех компонентов:


Принципы работы
  1. Основной процесс (Main) отвечает за создание и управление окнами и различными событиями приложения (именно этот процесс создает рендеринг процессы)
  2. Процесс рендеринга (Renderer) Отвечает за запуск пользовательского интерфейса вашего приложения (их может быть любое количество)

Прицип работы в схеме


Взаимодействие процессов
Эти процессы полностью изолированы друг от друга и отвечают за различные задачи, но они должны как-то взаимодействовать и с этим нам помогает IPC (inter-process communication) модуль, который позволяет взаимодействовать между этими процессами.

Взаимодействие процессов в схеме


Посмотреть пример взаимодействия можно по ссылке.

В примере показано как событие click, описанное в процессе рендеринга (Renderer) взаимодействует с главным (main) процессом.

Хранение данных: FileSystem
Обычно для хранения каких-либо данных используют БД.
Но в десктоп приложениях у нас есть доступ к файловой системе, поэтому мы можем хранить данные прямо на компьютере пользователя (если их не очень много).

Плюсы Electron приложения
WEB как UI ( HTML, CSS, JS )
Разработка только под Chrome ( Safari, IE )
Chrome Devtools
Скорость разработки
Современный стек ( React, TypeScript, ...)
Кроссплатформенная разработка ( Windows, Mac OS, Linux )

Минусы Electron приложений
Вес проекта
Время старта ( если большое приложение )
Не все платформы имеют одинаковый интерфейс ( Н-р: Tray )
Linux имеет большое количество дистрибутивов

Вывод: достаточно знать html, css, js, чтобы разрабатывать на Desktop.
Подробнее..
Категории: Html , Javascript , Css , Electron , Desktop , Desktop apps

Из песочницы Desktop pet на C WPF

25.07.2020 16:11:23 | Автор: admin

Desktop pet пусть и бесполезное, но весьма забавное украшение рабочего стола. В данной статье показана, наверное, самая простая его реализация.



Гифка под катом!



Немного о начале работы с WPF


Для создания приложения использовалась Visual Studio 2017. Итак, создаём проект, Visual C# -> Приложение WPF.



Для начала необходимо создать папку, в которой будут храниться анимированные спрайты для будущего десктоп пета. Для этого нужно райткликнуть по названию проекта в обозревателе решений Добавить -> Создать папку, назовём Images.



Чтобы добавить спрайты в папку, достаточно перенести их в неё в обозревателе решений.



Настройка окна приложения


Окно приложения представляет собой непосредственно тело десктоп пета, поэтому нужно убрать всё лишнее, чтобы было видно только спрайты. Перейдём в MainWindow.xaml. Пропишем нужные свойства внутри тега Window. Изначально они выглядят так:


Title="MainWindow" Height="450" Width="800">

Чтобы убрать рамку окна:


WindowStyle="None" ResizeMode="NoResize"

Чтобы сделать прозрачным фон:


Background="Transparent" AllowsTransparency="True"

Далее определим место на экране, где появится окно. Например, в правом нижнем углу над панелью управления. Для настройки положения окна вручную нужно указать свойства, где Top определяет отступ от верхнего края экрана, а Left от левого:


WindowStartupLocation="Manual" Top="485" Left="1000"

В итоге тег Window должен выглядеть так:


<Window x:Class="WpfApp1.MainWindow"        xmlns="http://personeltest.ru/away/schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://personeltest.ru/away/schemas.microsoft.com/winfx/2006/xaml"        xmlns:d="http://personeltest.ru/away/schemas.microsoft.com/expression/blend/2008"        xmlns:mc="http://personeltest.ru/away/schemas.openxmlformats.org/markup-compatibility/2006"        xmlns:local="clr-namespace:WpfApp1"        mc:Ignorable="d"        Title="MainWindow" Height="340" Width="353.2" WindowStyle="None" Background="Transparent" AllowsTransparency="True" WindowStartupLocation="Manual" Top="485" Left="1000">

WpfAnimatedGif


К сожалению, по-умолчанию WPF не поддерживает работу с гифками, поэтому придётся дополнительно установить библиотеку WpfAnimatedGif. Для этого нужно райткликнуть по названию проекта в обозревателе решений и выбрать Управление пакетами NuGet



В появившемся окне вводим в поиск WpfAnimatedGif, выбираем первое и нажимаем установить.



После этого в тег Window нужно добавить пространство имён:


xmlns:gif="http://personeltest.ru/away/wpfanimatedgif.codeplex.com"

На этом установка закончена, перейдём к непосредственно спрайтам.


Основная часть


Перейдём к содержимому окна внутри Grid. Перед началом не забудем убрать прозрачность Grid:


<Grid  Opacity="1">

Чтобы указать имя файла начального спрайта в теге Image, используем AnimatedSource из WpfAnimatedGif:


gif:ImageBehavior.AnimatedSource="Images/a.gif"

Чтобы анимация была бесконечной, нужно ставить gif:ImageBehavior.RepeatBehavior="Forever", но в моём примере после начальной анимации будет другая, поэтому gif:ImageBehavior.RepeatBehavior="1x.


<Image Name="img" gif:ImageBehavior.AnimatedSource="Images/a.gif" gif:ImageBehavior.RepeatBehavior="1x"  Margin="-68,-63,-68,-38" RenderTransformOrigin="0.5,0.5" gif:ImageBehavior.AutoStart="True" gif:ImageBehavior.AnimationCompleted="Complete">        </Image>

gif:ImageBehavior.AnimationCompleted="Complete" функция, выполняемая после окончания анимации.


Чтобы взаимодействовать с персонажем добавим прозрачную кнопку:


<Button Name="btn1" Content="Button" HorizontalAlignment="Left" Height="314" Margin="93,26,0,0" VerticalAlignment="Top" Width="163" Opacity="0" Click="Change"/>

Обратите внимание на свойство Click=Change, где Change функция, выполняемая при нажатии.


В итоге Grid должна выглядеть так:


<Grid  Opacity="1">        <Image Name="img" gif:ImageBehavior.AnimatedSource="Images/a.gif" gif:ImageBehavior.RepeatBehavior="1x"  Margin="-68,-63,-68,-38" RenderTransformOrigin="0.5,0.5" gif:ImageBehavior.AutoStart="True" gif:ImageBehavior.AnimationCompleted="Complete">        </Image>        <Button Name="btn1" Content="Button" HorizontalAlignment="Left" Height="314" Margin="93,26,0,0" VerticalAlignment="Top" Width="163" Opacity="0" Click="Change"/>    </Grid>


Перейдём к коду для поведения десктоп пета (MainWindow.xaml.cs). При нажатии персонаж чихает и меняет эмоцию, причем чихает каждый раз в другую сторону.
Внутри класса MainWindow:Window инициализируем нужные переменные:


int k = 0;//номер эмоцииstring num = "";//имя файла int n=11;//количество эмоций +1(не учитывая чихи)

Там же добавим две функции: Complete и Change.


private void Complete(object sender, RoutedEventArgs e)        {            num = "Images/" + k.ToString() + ".gif";            BitmapImage image = new BitmapImage();            image.BeginInit();            image.UriSource = new Uri(num, UriKind.Relative);             image.EndInit();            ImageBehavior.SetAnimatedSource(img, image); //смена анимации, img  name в Image, image  новая гифка        }private void Change(object sender, RoutedEventArgs e)        {            k = (k + 1) % n;            BitmapImage image = new BitmapImage();            image.BeginInit();            if (k%2==0) image.UriSource = new Uri("Images/a.gif", UriKind.Relative);            else image.UriSource = new Uri("Images/b.gif", UriKind.Relative);            image.EndInit();            ImageBehavior.SetAnimatedSource(img, image);        }

object sender в данном случае кнопка. a.gif и b.gif анимации чихания(вправо и влево), а 0.gif 10.gif эмоций. При каждом нажатии k увеличивается, пока не становится больше 10. Если k чётное чих в одну сторону, если нечётное в другую. После окончания анимации чихания выполняется функция Complete, меняющая эмоцию персонажа.



Результат



Источники


WPF
WpfAnimatedGif
Спрайты

Подробнее..
Категории: C , Net , Desktop pet , Desktop apps

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru