Загрузка...

Кликер мандарина на WPF

Тема в разделе C# создана пользователем Sad0w 20 июн 2024. 295 просмотров

  1. Sad0w
    Sad0w Автор темы 20 июн 2024 50 27 май 2023
    Всем привет. Решил я написать самое полезное приложение на WPF

    Для начала потребуется установить картинку мандарина в формате .ico, чтобы это было иконкой нашего приложения. После установки, кидаем её в папку проекта и подключаем в файле проекта:
    Код

    <Project Sdk="Microsoft.NET.Sdk">

    <!--Не заменяйте свои настройки на мои.
    Добавьте в свой проект только ApplicationIcon и ItemGroup-->

    <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UseWPF>true</UseWPF>

    <!--В AppliactionIcon указываем путь до изображения
    Это нужно, чтобы изображение стало иконкой приложения-->
    <ApplicationIcon>mandarin.ico</ApplicationIcon>
    </PropertyGroup>

    <!--В Include указываем путь до изображения
    Это нужно, чтобы проект видел изображение
    И компилировался без ошибок-->
    <ItemGroup>
    <Resource Include="mandarin.ico" />
    </ItemGroup>

    </Project>
    После этого создадим класс Count, чтобы изменять счётчик кликов:
    CSHARP
    using System.ComponentModel;
    using System.Runtime.CompilerServices;

    namespace Mandarin // Пространство имён может отличаться от вашего
    {
    class Count : INotifyPropertyChanged
    {
    private long counts;

    public long Counts // Переменная, которая будет хранить в себе количество кликов
    {
    get { return counts; }
    set
    {
    counts = value;
    OnPropertyChanged("Counts");
    }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged([CallerMemberName] string prop = "")
    {
    if (PropertyChanged != null)
    PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }
    }
    }
    Перейдём в xaml код нашего приложения:
    Код
    <!--Пространство имён может отличаться от вашего. Замените его на своё
    Заменять в параметре xmlns:local-->
    <Window x:Class="Mandarin.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Mandarin"
    mc:Ignorable="d"
    Title="Мандарин" Icon="mandarin.ico"
    WindowStartupLocation="CenterScreen"
    MinWidth="200" MinHeight="350"
    Width="1280" Height="720"
    Background="#B57000"
    KeyDown="WindowKeyDown">
    <Window.Resources>
    <!--Создадим переменную Count, которая содержит созданный нами класс-->
    <local:Count x:Key="Count" Counts="0" />
    </Window.Resources>
    <Grid>
    <!--Создадим привязку к переменной Count, чтобы выводить клики-->
    <TextBlock
    Text="{Binding Source={StaticResource Count}, Path=Counts}"
    Foreground="White" FontFamily="Arial" FontSize="18"
    HorizontalAlignment="Center" VerticalAlignment="Center"
    Margin="0, -250, 0, 0" />
    <!--Создадим Image, чтобы отобразить наше изображение
    Также добавим событие MouseLeftButtonDown,
    Чтобы обрабатывать нажатия, для изменения количества кликов-->
    <Image
    Source="mandarin.ico"
    HorizontalAlignment="Center" VerticalAlignment="Center"
    MaxWidth="200" MaxHeight="200"
    MouseLeftButtonDown="Click" />
    </Grid>
    </Window>
    Теперь нужно обрабатывать клики. Для этого перейдём в cs код нашего xaml. (Обычно он называется MainWindow.xaml.cs):
    CSHARP
    using System.Windows;
    using System.Windows.Input;

    namespace Mandarin // Пространство имён может отличаться от вашего
    {
    public partial class MainWindow : Window
    {
    public MainWindow() =>
    InitializeComponent(); // Инициализация компонентов, для отображения элементов

    private void Click(object sender, MouseButtonEventArgs e) =>
    ((Count)Resources["Count"]).Counts++; // При нажатии на изображение, добавлять еденицу к количеству кликов

    private void WindowKeyDown(object sender, KeyEventArgs e)
    {
    if (e.Key == Key.F11) // При нажатии на F11, переключаться на полноэкранный режим. Сделано для удобства
    {
    WindowStyle = WindowStyle == WindowStyle.None ? WindowStyle.SingleBorderWindow : WindowStyle.None;
    WindowState = WindowStyle == WindowStyle.SingleBorderWindow ? WindowState.Normal : WindowState.Maximized;
    }
    }
    }
    }
     
    1. Sad0w Автор темы
      dandlmorrow, чтобы не преобразовывать значение textblock из string в int и обратно
    2. dandlmorrow
      Sad0w, :pog:не хочешь сеньором за миллиард работать?
    3. Sad0w Автор темы
      dandlmorrow, миллиард маловато будет
Загрузка...
Top