Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all 520065 articles
Browse latest View live

вывести фигуру в градациях серого цвета на изображение - C# Windows Forms

$
0
0
вывести фигуру в градациях серого цвета на изображение
полная моя задача - создайте функцию, выводящую на изображение треугольник. Для всех
точек вне треугольника оставьте только канал B. Все точки внутри
треугольника переводятся в градации серого цвета.
мне удалось сделать форму с загрузкой в picturebox изображения и кнопку с переводом этого изображения в синий цвет. а вот с созданием треугольника проблемы - вернее сам треугольник любого цвета нарисовать проблем нет, но нужно сделать так, чтобы в этом треугольнике была часть загруженного изображения, только в градациях серого цвета (удается сделать просто серый треугольник, как его проецировать на загруженное изображение не могу понять). помогите, пожалуйста с этой задачей. заранее спасибо
прикладываю скриншоты и код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp31
{
public partial class Form1 : Form
{ //Объявляем переменные доступные в каждом обработчике события
private Point PreviousPoint, point; //Точка до перемещения курсора мыши
//и текущая точка
private Bitmap bmp;
private Pen blackPen;
private Graphics g;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
blackPen = new Pen(Color.Black, 4); //подготавливаем перо
}
private void button1_Click(object sender, EventArgs e)
{ //открытие файла
OpenFileDialog dialog = new OpenFileDialog();
//задаем расширения файлов
dialog.Filter = "Image files (*.BMP, *.JPG, *.GIF, *.TIF, *.PNG,*.ICO, *.EMF, *.WMF)| *.bmp; *.jpg; *.gif; *.tif; *.png; *.ico; *.emf; *.wmf";
if (dialog.ShowDialog() == DialogResult.OK)//вызываем диалоговое окно
{
Image image = Image.FromFile(dialog.FileName); //Загружаем в image
//изображение из выбранного файла
int width = image.Width;
int height = image.Height;
pictureBox1.Width = width;
pictureBox1.Height = height;
bmp = new Bitmap(image, width, height); //создаем и загружаем из
//image изображение в формате bmp
pictureBox1.Image = bmp; //записываем изображение в формате bmp
//в pictureBox1
g = Graphics.FromImage(pictureBox1.Image); //подготавливаем объект
//Graphics для рисования в pictureBox1
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{ // обработчик события нажатия кнопки на мыши
// записываем в предыдущую точку (PreviousPoint) текущие координаты
PreviousPoint.X = e.X;
PreviousPoint.Y = e.Y;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{//Обработчик события перемещения мыши по pictuteBox1
if (e.Button == MouseButtons.Left) //Проверяем нажатие левой кнопка
{ //запоминаем в point текущее положение курсора мыши
point.X = e.X;
point.Y = e.Y;
//соединяем линией предыдущую точку с текущей
//текущее положение курсора мыши сохраняем в PreviousPoint
PreviousPoint.X = point.X;
PreviousPoint.Y = point.Y;
pictureBox1.Invalidate();//Принудительно вызываем перерисовку
}
}

private void button3_Click(object sender, EventArgs e)
{
//циклы для перебора всех пикселей на изображении
for (int i = 0; i < bmp.Width; i++)
for (int j = 0; j < bmp.Height; j++)
{
int R = bmp.GetPixel(i, j).R;
int G = bmp.GetPixel(i, j).G;
int B = bmp.GetPixel(i, j).B;
int Blue = (B = B + B) / 3;
Color p = Color.FromArgb(255, Blue, Blue, 255);
bmp.SetPixel(i, j, p);
int R1 = bmp.GetPixel(i, j).R; //извлекаем долю красного цвета
int G1 = bmp.GetPixel(i, j).G; //извлекаем долю зеленого цвета
int B1 = bmp.GetPixel(i, j).B; //извлекаем долю синего цвета
int Gray1 = (R1 = G1 + B1) / 3; // высчитываем среднее
Color p1 = Color.FromArgb(255, Gray1, Gray1, Gray1); //переводим
SolidBrush I = new SolidBrush(p1);
g.FillRectangle(I, 0, 0, 100, 100);
}
Refresh(); //вызываем функцию перерисовки окна
}

private void button2_Click(object sender, EventArgs e)
{ //сохранение файла
SaveFileDialog savedialog = new SaveFileDialog();
//задаем свойства для savedialog
savedialog.Title = "Сохранить картинку как ...";
savedialog.OverwritePrompt = true;
savedialog.CheckPathExists = true;
savedialog.Filter =
"Bitmap File(*.bmp)|*.bmp|" +
"GIF File(*.gif)|*.gif|" +
"JPEG File(*.jpg)|*.jpg|" +
"TIF File(*.tif)|*.tif|" +
"PNG File(*.png)|*.png";
savedialog.ShowHelp = true;
if (savedialog.ShowDialog() == DialogResult.OK)
{
// в fileName записываем полный путь к файлу
string fileName = savedialog.FileName;
// Убираем из имени три последних символа (расширение файла)
string strFilExtn =
fileName.Remove(0, fileName.Length - 3);
// Сохраняем файл в нужном формате и с нужным расширением
switch (strFilExtn)
{
case "bmp":
bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case "jpg":
bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case "gif":
bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Gif);
break;
case "tif":
bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff);
break;
case "png":
bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
break;
default:
break;
}
}
}
}
}

Изображения
Тип файла: png 123.png (176.3 Кб)
Тип файла: png 12345.png (157.9 Кб)

.NET 4.x Определить общее количество видеопамяти видеокарты - C# .NET

$
0
0
Всем привет, необходимо определить общее кол-во видеопамяти на видеокартах от nvidia и amd. Так как WMI выводит максимум 4гб, для nvidia нашел библиотеку cudafy. Есть ли что то похожее для amd? Или может есть простой способ вывести видеопамять для каждого производителя, не ограничиваясь 4гб?

Отсортировать все элементы массива, введенные случайным образом (n - количество элементов массива) по возрастанию - Python: Решение задач

$
0
0
Отсортировать все элементы массива, введенные случайным образом (n - колиество элементов массива) по возрастанию.
Можно полный ответ если не сложно :)

Создать класс "Окружность" - С++ для начинающих

$
0
0
Описать класс, включающий заданные поля и методы, двумя способами: без конструктора и с конструктором. Протестировать все методы класса. Поля класса должны быть скрытыми (private) или защищенными (protected). Методы не должны содержать операций ввода/вывода, за исключением процедуры, единственной задачей которой является вывод информации об объекте на экран.
Объект – окружность. Параметры: координаты центра, радиус. Методы: процедура инициализации полей, процедура вывода на экран значения полей объекта и функция, определяющая, находится ли некоторая точка с координатами x,y внутри окружности.

FormMouseWheel - C++ Builder

$
0
0
Привет Всем! :)
Столкнулся с такой вот проблемой.
Мне надо с прокруткой колеса мышки менять значение на 1.

:

  int a=0;

void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
                  TPoint &MousePos, bool &Handled)
{  a+=1;
        ShowMessage(a);
}

в результате "а" будет увеличено в два раза.
Получается что прокрутка колесика мышки на один щелчек выполняется два раза?
все тоже самое происходит и с
FormMouseWheelUp
FormMouseWheelDown
не верю что это глюк в
Embarcadero® RAD Studio 10.4
в интернете так и не нашел объяснения.
буду рад помощи.

Несколько полей для ввода данных в форму Access - Microsoft Access

$
0
0
Добрый день форумчане!

В Access я почти 0. Только начал изучать.

Нужно решить одну производственную задачу. Подсказали, что можно это сделать на access, вот и изучаю его на прикладном примере. К сожалению сразу появляются нестандартные вопросы, ответы на которые базовые учебники, которые я сейчас читаю, не дают.

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

Подробнее о задаче:
Мне нужно сделать инструмент для сбора данных о трудозатратах сотрудников по проектам. Сотрудники должны периодически заполнять форму access для накопления/мониторинга этих данных.
Поля в таблице базы данных: Контракт, Проект, Задача, ФИО, Трудочасы, % выполнения и т.п.

В форме нужно сделать например по 8-10 полей для ввода данных (с запасом).

Подскажите пожалуйста как это сделать.

Пример:
Сотрудник отработал по 5 контрактам за день он должен заполнить примерно следующую форму. Нажать сохранить и 5 записей должны сохраниться в базе.



ФИО Контрагент Проект Задача Трудочасы % выполнения Дата
1 Иванов ГПН Проект 1 Задача 1 1 10 01.11.2021
2 Иванов Лукойл Проект 2 Задача 2 2 10 01.11.2021
3 Иванов Фирма1 Проект 3 Задача 12 3 10 01.11.2021
4 Иванов Фирма2 Проект 4 Задача 13 1 10 01.11.2021
5 Иванов Фирма3 Проект 5 Задача 15 1 10 01.11.2021
6
7
8

Как удалить фрагмент текста между заданными словами - Visual Basic .NET

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

Imports System.Text.RegularExpressions
Public Class Form1
    Dim A, A1, Rez1 As String

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Rez1 = IO.File.ReadAllText("1.txt", System.Text.Encoding.Default)
            A = "li  data-aop=day"
            A1 = "aria-label="

            Rez1 = Regex.Match(Rez1, A & "(.*?)" & A1, RegexOptions.IgnoreCase Or RegexOptions.Singleline).Groups(0).Value
                TextBox1.Text = ""
                TextBox1.Text = Rez1
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class

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

Найти среднее геометрическое всех элементов одномерного массива - Python: Решение задач

$
0
0
Найти среднее геометрическое всех элементов одномерного массива, длиной n, заданного случайным образом.
Если не сложно можно полный ответ

Дана квадратная матрица - Python: Решение задач

$
0
0
Дана квадратная матрица. Получить обратную к ней матрицу, умноженную на транспонированную.
Если не сложно можно полный ответ.

Необходимо суммировать все нечётные целые числа в диапазоне, который введёт пользователь с клавиатуры - C# для начинающих

$
0
0
Дана задача:
Необходимо суммировать все нечётные целые числа в диапазоне, который введёт пользователь с клавиатуры

.NET 5 Повторение кода - C# для начинающих

$
0
0
Как сделать что бы код повторялся 3 раза? Тоесть после выполнения и выдачи результата он снова спрашивал переменную
:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
 

{
    public class Program
    {
        public static void Main(string[] args)
        {
            int n = Convert.ToInt32(Console.ReadLine());
 
            double s = 0;
 
            for(int i = 1; i <= n; i++)
            {
                s += 1.0 / i;
            }
            Console.WriteLine(s);
        }
    }
}

Как можно создать ютуб видео установщик ? - C# Windows Forms

$
0
0
Я хотел бы спросить как можно создать установщик видео из ютуба ?

Задана матрица A размерности N*M. Обеспечить сортировку каждого столбца по убыванию - C для начинающих

Найти радиус и интервал сходимости ряда - Математический анализ

$
0
0

∑ (4^2n *(x+1)^(n^2)) . Помогите найти радиус!
n=1

help plz , что значит данная строка - С++ для начинающих

$
0
0
задание:Задан текст определить имеется ли в заданной строке пара соседних одинаковых символа

:

int main()
{
    setlocale(LC_ALL, "Russian");
    char str[256]; int i;
    cout << "Введите строку:" << endl;
    cin.getline(str, 256);
    for (i = 0; i < strlen(str) - 1; i++)
        if (str[i] == str[i + 1])
        {
            cout << "В этой строке есть пара соседних одинаковых символов." << endl;
            break;
        }

    if (i == strlen(str) - 1)
        cout << "В этой строке нет соседних одинаковых символов." << endl;

    system("pause");
    return 0;
}

что означает
:

if (i == strlen(str) - 1)
Почему нельзя написать
:

if (str[i] == str[i - 1])
и, если не сложно, это тоже объяснить
:

for (i = 0; i < strlen(str) - 1; i++)

Модернизация Макроса - VBA

$
0
0
Добрый день, помогите расшифровать и модернизировать макрос под определенную задачу.

:

Sub ObedenitVertikal()
Dim i As Long
Dim j As Long
Dim intext As String
Application.DisplayAlerts = False
For i = 1 To Selection.Columns.Count
  intext = Selection.Cells(1, i)
  For j = 2 To Selection.Rows.Count
    intext = intext & Chr(10) & Selection.Cells(j, i)
  Next
  Selection.Columns(i).Merge
  Selection.Cells(1, i) = intext
Next
Application.DisplayAlerts = True
End Sub

Задача: Объединение ячеек без потери данных во всем диапазоне таблицы.

Приложенная таблица намного больше, но хотелось бы чтобы при запуске макроса ячейки объединялись.
Границы объединения выделены жирной линией.

Что нужно добавить в этот макрос чтобы он объединял ячейки во всей таблице?

Вложения
Тип файла: xlsx Объединение ячеек.xlsx (143.1 Кб)

Узнать парные места массива - С++ для начинающих

$
0
0
Всем привет!
Имеется рандомная последовательность вещественных чисел состоящая из 22 элементов. Задача в том, что надо разместить элементы последовательности, которые стоят на парных местах в порядке уменьшения (другие элементы остаются на своих местах) методом пузырьковой сортировки.
Вообщем то разместить элементы в порядке уменьшения я думаю осилю сам, но не могу понять как найти парные места в массиве.
Тоесть как я понимаю надо разместить в порядке уменьшения числа с индексами 2, 4, 6 и т.д

Реализовать класс "длинных" целых чисел - С++ для начинающих

Не могу отредактировать пункты меню левого основного меню каталога? - 1С Битрикс

$
0
0
На скриншотах представлена проблема. Есть вертикальное меню. В режиме правки, нажимаю на кнопку "редактировать пункты меню", появляется окошко где нет ни одного пункта. Что я делаю не так?? Если с горизонтальным меню проделать то же самое - то редактируется в обычном режиме.

Изображения
Тип файла: png Меню 1.png (26.4 Кб)
Тип файла: png Меню 2.png (46.0 Кб)

В среде Visual Studio С# создать приложение Windows Forms, моделирующее движение шариков в прямоугольном пространстве. Д - C# Windows Forms

$
0
0
В среде Visual Studio С# создать приложение Windows Forms, моделирующее движение шариков в прямоугольном пространстве. Для описания шарика создать класс с необходимыми полями и методами. Поля класса: масса шарика, радиус, нормальная и тангенциальная скорости. Методы класса: описываются необходимые на ваш взгляд методы. При учете столкновений шариков друг с другом и со стенками считать соударения абсолютно упругими. Новый шарик добавляется соответствующей кнопкой
Viewing all 520065 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>