Ответы пользователя по тегу C#
  • Как сделать анимацию на XAML?

    @cicatrix
    было бы большой ошибкой думать
    Вы про это?
    Easing functions
    Ответ написан
    Комментировать
  • Как увеличить разрешение .EPS файла на С# Windows Forms и сохранить его?

    @cicatrix
    было бы большой ошибкой думать
    EPS векторный формат. О каком разрешении идёт речь? Он масштабируется как хочешь.
    Ответ написан
  • Как создать методы контроллера для создания сущностей 2 классов?

    @cicatrix
    было бы большой ошибкой думать
    Я бы вообще сделал один метод на контроллере, а с командой создавать или без, регулировал бы переданным в запросе параметром.
    Ответ написан
    Комментировать
  • Как искать элементы в xml без имени?

    @cicatrix
    было бы большой ошибкой думать
    Вопрос первый: а если ты их добавляешь динамически, чего ты ссылки на них не хранишь в массиве, например?
    Если по каким-то причинам ты так делать не хочешь, вопрос второй - тэг Content предназначен для указания... контента (содержимого) элемента, но никак не метки (имени). Для этого есть атрибут "Name"
    Ну а так:
    .Where(l => l.Content.Contains("EtalonName"));
    Ответ написан
    8 комментариев
  • Как убрать ошибку?

    @cicatrix
    было бы большой ошибкой думать
    Написано "Сервер не найден или недоступен".
    Действительно, переводить не надо, надо тонны нерелевантного кода написать, вместо того, чтобы текст ошибки перевести.
    Ответ написан
  • Как парвильно обратиться к контроллеру, передав в качестве параметра массив?

    @cicatrix
    было бы большой ошибкой думать
    Попробуй
    http://localhost:5000/api/Rtb/GetParam?ids=68&ids=65

    Но вообще, массивы в контроллер передавать GET-ом, на мой взгляд, извращение.
    Ответ написан
  • Как написать поиск-фильтрацию по всем типам?

    @cicatrix
    было бы большой ошибкой думать
    Как-то так, наверное:
    public static IQueryable<T> ApplyFiltering<T>(
        this IQueryable<T> source, 
        string propertyName, 
        string filter)
    {
            filter = filter.ToLower(); // выключить зависимость от регистра
            return source
                .Where(item => 
                item.GetType()
                .GetProperty(propertyName)
                .GetValue(item, null)
                .ToString().ToLower().Contains(filter));
    } // ApplyFiltering
    Ответ написан
  • Как в C Sharp выдавать ошибку при неправильном вводе?

    @cicatrix
    было бы большой ошибкой думать
    Вместо Convert.ToDouble ипсользуй Double.TryParse
    Он вернёт false, если не удалось преобразование.
    Как-то так:
    double x1;
    do
    {
       Console.Write("Введите x1: ");
    } while (!double.TryParse(Console.ReadLine(), out x1))

    P.S. Имей в виду, что успех или неуспех преобразования ещё зависит от принятого в локали системы разделителя целой и дробной части (точка или запятая). Но это уже отдельный геморрой.
    Ответ написан
  • Как крякнуть защищенную программу?

    @cicatrix
    было бы большой ошибкой думать
    Это отдельное направление, которое называется Реверс-инжиниринг.
    Те, кто этим занимается, это действительно, своего рода, "элита", так как там не существует готовых методик, шаблонных решений и пр. Каждая новая программа - чёрный ящик, который надо разобрать и посмотреть, как он работает, при этом ты ничего не знаешь о том, что было на уме у его создателя.
    Разумеется, любая защита обходится, но дело это кропотливое, долгое, требующее хороших знаний языка ассемблера для той линейки процессоров, под который программа написана.
    Для C# существует IL-Spy или похожие дисассемблеры, которые действительно позволяют получить некое подобие исходного кода, но, зачастую, даже имея на руках код (очень часто обфуцированный) предстоит ещё очень долгая, нудная и кропотливая работа только для того, чтобы разобраться, что там вообще происходит.
    Кряк "взлом" программы часто сводится к подмене результата проверки условия. Простой if, казалось бы. Однако найти нужное место в машинном коде или в памяти процесса - очень и очень сложно.

    Сразу говорю, что кракером быстро не становятся. На это могут потребоваться годы наряжённого труда и самообучения (помните - этому никто не сможет научить, этому можно только научиться самому), методом проб и ошибок. А каждый новый взлом - это новая задача, требующая новых знаний и совсем других подходов.
    Ответ написан
    Комментировать
  • Как исправить ошибку при подключении к MS SQL Server в ASP Net Core приложении на Ubuntu?

    @cicatrix
    было бы большой ошибкой думать
    Судя по этому сообщению:
    (provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed

    Вполне возможно, в системе не хватает нужного доверенного сертификата.
    Ответ написан
    Комментировать
  • Можете дать идеи для проектов на языке C#?

    @cicatrix
    было бы большой ошибкой думать
    Ну напиши мессенджер. Чтобы и p2p и через сервер. И веб-клиент.
    Протокол сделай безопасный. Шифрование, локальные базы данных. И чтобы с эмоджами, и картинки и видео пересылать можно было. Кросс-платформенный. Чтобы и на iOS, и на Android, и на Linux, и на Windows, и на MacOS.
    Ответ написан
    Комментировать
  • Как правильно построить функцию?

    @cicatrix
    было бы большой ошибкой думать
    Короче, вот готовый пример, как работать с матрицами трансформации. Это действительно проще показать, чем объяснить
    using System;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Windows.Forms;
    
    namespace DrawPlot
    {
        public partial class MainForm : Form
        {
            // Добавил сюда, чтобы в InitializeComponent не лезть
            PictureBox picDisplay;
    
            // Макс размер сетки по наибольшему измерению окна 
            // для сохранения пропорции (либо по ширине, либо по высоте)
            const float MaxGrid = 10.0f;
    
            // Это задаёт логический размер окна
            SizeF viewPort;
    
            // Шаги сетки 
            const float GridStep = 0.1f;
            // Каждые 10 линий сетки делаем линию поярче
            const int BoldLineStep = 10;
    
            // Цвета        
            Pen pen_LargeGrid = new Pen(Color.FromArgb(0,64,0));
            Pen pen_SmallGrid = new Pen(Color.FromArgb(0,32,0));        
            Pen pen_Axii = new Pen(Color.FromArgb(0,128,0));
            SolidBrush plotBrush = new SolidBrush(Color.Red);
    
            // Ширина 1 пиксела в логических размерах
            float Pixel_Width;
    
            public MainForm()
            {
                InitializeComponent();
                picDisplay = new PictureBox() { Parent = this, Dock = DockStyle.Fill, BackColor = Color.Black };
                picDisplay.Paint += this.PicDisplay_Paint;
                picDisplay.Resize += this.PicDisplay_Resize;
                // Стрелочка 10х4
                AdjustableArrowCap cap = new AdjustableArrowCap(4.0f,10.0f);
                pen_Axii.CustomEndCap = cap;
                CalculateDimensions();
            } // MainForm Ctor       
    
            private void PicDisplay_Resize(object sender, EventArgs e)
            {
                CalculateDimensions();
                picDisplay.Invalidate();
            } // PicDisplay_Resize
    
            private void CalculateDimensions()
            {
                var rect = picDisplay.ClientRectangle;
                // Устанавливаем размеры в зависимости от того, что больше, длина или ширина
                // для сохранения квадратной сетки
                if (rect.Width > rect.Height)
                    viewPort = new SizeF(MaxGrid, MaxGrid * (rect.Height / (float)rect.Width));
                else
                    viewPort = new SizeF(MaxGrid * (rect.Width / (float)rect.Height), MaxGrid);
                // Считаем ширину 1 пикселя 
                Pixel_Width = viewPort.Width / rect.Width;
                // Назначаем эту ширину используемым перьям
                foreach (var pen in new Pen[] { pen_Axii, pen_LargeGrid, pen_SmallGrid, pen_LargeGrid })
                    pen.Width = Pixel_Width;
            } // CalculateDimensions
    
            private void PicDisplay_Paint(object sender, PaintEventArgs e)
            {            
                Graphics g = e.Graphics;
                
                // Масштабируем
                g.ScaleTransform(picDisplay.Width / viewPort.Width, (picDisplay.Height / viewPort.Height));
    
                // Двигаем начало координат в середину
                float halfWidth = viewPort.Width / 2;
                float halfHeight = viewPort.Height / 2;
                g.TranslateTransform(halfWidth, halfHeight);
    
                // Переворачиваем Y
                g.ScaleTransform(1.0f, -1.0f);
    
                // Рисуем сетку
                int step = 0;
                for(var f = 0f; f < MaxGrid / 2 ; f += GridStep)
                {
                    var currentPen = pen_SmallGrid;                
                    if (0 == step % BoldLineStep) currentPen = pen_LargeGrid;
                    // Горизонтальные
                    g.DrawLine(currentPen, -halfWidth, f, halfWidth, f);
                    g.DrawLine(currentPen, -halfWidth, -f, halfWidth, -f);
                    // Вертикальные
                    g.DrawLine(currentPen, f, -halfHeight, f, halfHeight);
                    g.DrawLine(currentPen, -f, -halfHeight, -f, halfHeight);
                    step++;
                } // for
                // Оси координат
                g.DrawLine(pen_Axii, -halfWidth, 0, halfWidth, 0);
                g.DrawLine(pen_Axii, 0, -halfHeight, 0, halfHeight);
    
                // график
                float y;
                for (var x = -halfWidth ; x < halfWidth ; x+= Pixel_Width)
                {
                    y = ((float)Math.Pow(x, 3) - 1) / (x + 5);
                    // Обязательно проверка на NaN и Infinity
                    if (!float.IsNaN(y) && !float.IsInfinity(y)) 
                          g.FillRectangle(plotBrush, new RectangleF(x, y, Pixel_Width, Pixel_Width));
                } // for
            } // PicDisplay_Paint
        } // class MainForm`    1+m  
    } // DrawPlot namespace


    6076227c0d1d2664851754.png
    Ответ написан
    1 комментарий
  • Загрузка больших файлов c#?

    @cicatrix
    было бы большой ошибкой думать
    4 гига, уж очень подозрительная цифра.
    Подозреваю, что где-то int переполнился.
    А, ну и на всякий случай посмотреть, что за файловая система. Fat файлы более 4 гигов не поддерживает. По той же причине.
    Ответ написан
    Комментировать
  • Managment studio и c# как взять данные для сравнения из базы данных?

    @cicatrix
    было бы большой ошибкой думать
    Что за база-то?

    if (user != null)
    В твоём коде про user ничего не известно.
    Что возвращается в runner?
    var runner

    Откуда MessageBox в веб-приложении? или это не веб-приложение?

    И главное - какой чудак придумал хранить в базе пароли открытым текстом?
    Ответ написан
    Комментировать
  • Как написать обобщенный фильтр?

    @cicatrix
    было бы большой ошибкой думать
    В данном примере строка сравнивается с Func.

    Я бы сделал так:
    public interface IMyItem
    {
        bool IsMatch(string pattern);
    }
    
    public static IQueryable<T> ApplyFilter<T>(this IQueryable<T> source, string filtertext) where T: IMyItem
    {
        return source.Where(item => item.IsMatch(filtertext));
    }


    Единственный минус - объекты, которые фильтруются, должны будут реализовать интерфейс IMyItem.
    В методе IsMatch, соответственно, должна выполняться проверка, подпадает ли объект под строку поиска или нет.
    Ответ написан
    Комментировать
  • Чтение и запись лога разными программами?

    @cicatrix
    было бы большой ошибкой думать
    Добавлю к ответу rPman про флаг FileShare описан немного контр-интуитивно. Флаг FileShare устанавливает права на доступ к файлам другим потокам.
    То есть, для потока, который пишет в файл, нужно ставить FileShare.Read - позволить другим читать файл
    Для потока, который читает из файла, нужно ставить FileShare.ReadWrite - позволить другим читать и писать в этот файл.
    Ответ написан
    Комментировать
  • Asp.net почему сбрасывается сессия аутентикации после перезапуска приложения?

    @cicatrix
    было бы большой ошибкой думать
    Обычно аутентификация происходит при установлении сеанса, состояние устанавливается как свойство этого сеанса. Естественно, после перезапуска приложения, сеансы новые и надо производить проверку authentication cookie заново.
    Ответ написан
    Комментировать
  • Как получить цвет пикселя по кординатам на Panel?

    @cicatrix
    было бы большой ошибкой думать
    Получаем картинку панели:
    private static Image PanelToBitmap(Control pnl) {
        var bmp = new Bitmap(pnl.Width, pnl.Height);
        pnl.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
        return bmp;
    }


    Получаем пиксель с картинки:
    Bitmap.GetPixel()
    Ответ написан
    Комментировать
  • Где-то ошибка в коде?

    @cicatrix
    было бы большой ошибкой думать
    Ну, а ошибку загуглить?
    Startup.cs покажи
    Ответ написан