Архив метки: Csharp

C# Разрезать изображение на части

before_Cut
Необходимо вырезать часть  картинки из pictureBox и показать на форме.

Сначала в битмапе формируем нужную  часть, затем передаем в picturebox.

Код:

public Bitmap CutImage(Bitmap src, Rectangle rect)
        {
           
            Bitmap bmp = new Bitmap(src.Width, src.Height); //создаем битмап

            Graphics g = Graphics.FromImage(bmp); 

            g.DrawImage(src, 0, 0, rect, GraphicsUnit.Pixel); //перерисовываем с источника по координатам

            return bmp;
        }

В обработчике нажатия кнопки пишем следующее:

private void button1_Click(object sender, EventArgs e)
        {
            Image temp = pictureBox1.Image;// берем картинку или Image.FromFile("D:\\123.png");
            Bitmap src = new Bitmap(temp, pictureBox1.Width, pictureBox1.Height); 
            // Задаем нужную область вырезания (отсчет с верхнего левого угла)
            Rectangle rect = new Rectangle(new Point(0, 0), new Size(pictureBox1.Width/2, pictureBox1.Height/2));
            // передаем в нашу функцию   
            Bitmap CuttedImage = CutImage(src, rect);
            // результат изображение передаем на форму 
            pictureBox1.Image = CuttedImage;
        }

Получилось  вот такое изображение после вырезания.

Cut_image

Число в строку, строку в число на разных языках.

Преобразование числа в строку и обратной операции на разных языках программирования.

Строку в число

С++

int atoi(const char* str) //для чисел типа integer
long atol(const char* str)//для чисел типа long
double atof(const char* str)//для чисел типа double

 PHP

<?php
$foo = 1 + "10.5";                // $foo это float (11.5)
$foo = 1 + "-1.3e3";              // $foo это float (-1299)
$foo = 1 + "bob-1.3e3";           // $foo это integer (1)
$foo = 1 + "bob3";                // $foo это integer (1)
$foo = 1 + "10 Small Pigs";       // $foo это integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo это float (14.2)
$foo = "10.0 pigs " + 1;          // $foo это float (11)
$foo = "10.0 pigs " + 1.0;        // $foo это float (11)
?>

C#

m = int32.Parse("123456");//из строки целое число

 Javascript

Для явного преобразования можно использовать 2 способа:

var number = Number(string_value);
var number = string_value - 0;

parseInt("3 blind mice"); // Возвращает 3
parseFloat("3.14 meters"); // Возвращает 3.14
parseInt("12.34"); // Возвращает 12
parseInt("0xFF"); // Возвращает 255

Число в строку

С++

char* itoa(int value, char* string, int radix) //для чисел типа integer
char* itoa(long value, char* string, int radix)//для чисел типа long
char* itoa(double value, char* string, int radix)//для чисел типа double

PHP

$name=5;
$string_name = (string)$name;

C#

int a=5;
string s=a.toString();

 Javascript

var string_value = String(number); // Использование конструктора String()
// в качестве функции
var string_value = number + ""; // Конкатенация с пустой строкой

Еще одну возможность предоставляет метод toString():

var n = 17;
string_value = number.toString();

Парсинг сайта используя C#

ParsingНеобходимо осуществить парсинг сайта, на котором выкладывается обновление, программа должна показывать дату выложенного обновления на сайте.

Решение

1. Создаем форму как на картинке.

 

2. Пишем следующий код для кнопки для парсинга сайта.

var request = WebRequest.Create("http://ereport.sbis.ru/download/update");
using (var responses = request.GetResponse())
{
using (var streams = responses.GetResponseStream())
using (var readers = new StreamReader(streams))
{
//в переменной html наш сайт
string html = readers.ReadToEnd();
//ищем определенное место
var UpdExp = new Regex(@"<td width=""70px;"".*>(?<upd>\d.*)</td>");
//в переменной upDate наша искомая дата обновления
string upDate = UpdExp.Match(html).Groups["upd"].Value; // дата
label1.Text = upDate; //выводим значение на форму
}
}

3. Если для выхода в интернет используется прокси, необходимо немного изменить программу.

Листинг парсинга через прокси сервер

WebProxy proxy = new WebProxy("192.168.0.1", 8080);
proxy.Credentials = new NetworkCredential("Имя пользвателя", "пароль");
var request = WebRequest.Create("http://ereport.sbis.ru/download/update");
request.Proxy = proxy;
using (var responses = request.GetResponse())
{
using (var streams = responses.GetResponseStream())
using (var readers = new StreamReader(streams))
{
string html = readers.ReadToEnd();
var UpdExp = new Regex(@"<td width=""70px;"".*>(?<upd>\d.*)</td>");
string upDate = UpdExp.Match(html).Groups["upd"].Value; // дата
label1.Text = upDate;
}
}

Парсинг сделан по нажатию по кнопке. При необходимости этот код можно поместить в таймер, который срабатывает к примеру раз в минуту.

Динамическое добавление и удаление контрола Panel со своими контролами.

Необходимо реализовать динамическое добавление панелей на форму со своими элементами внутри (к примеру label).

1. Создаем форму и кидаем 2 кнопки. Один Button отвечает за добавление, второй настроим на удаление.

2. создадим массив panel и label.

Panel[] pan = new Panel[5];
Label[] lb = new Label[5];

Их прописать после этой строчки

public partial class Form1 : Form
{

должно получиться так

public partial class Form1 : Form
{
Panel[] pan = new Panel[5];
Label[] lb = new Label[5];
......

3. пропишем следующий код для динамического добавления контролов на нашу форму

private void button1_Click(object sender, EventArgs e)
{

int j = 0;
for (int i = 0; i < pan.Length; i++)
{
//создаем динамически панель
pan[i] = new System.Windows.Forms.Panel();
pan[i].Location = new System.Drawing.Point(101, 50 + i * 30);
pan[i].Name = "paneld" + i.ToString();
pan[i].Size = new System.Drawing.Size(75, 23);
pan[i].BorderStyle = BorderStyle.FixedSingle;
pan[i].TabIndex = i;
//создаем динамически label
lb[j] = new System.Windows.Forms.Label();
lb[j].Location = new System.Drawing.Point(5, 5);
lb[j].Name = "labeld" + j.ToString();
lb[j].Text = "labeld" + j.ToString();

//привязываем панель к форме
Controls.Add(pan[i]);
//привязываем label к панели
pan[i].Controls.Add(lb[j]);
j++;
}
}

4. Прописать следующий код для удаления контрола из формы и всех связанных с ним

private void button2_Click(object sender, EventArgs e)
{
//удаляем label из контролов
pan[1].Controls.Remove(lb[1]);
//освобождаем память для label
lb[1].Dispose();
//то же для панели
Controls.Remove(pan[1]);
pan[1].Dispose();
}

Проход всех radioButton для определения выбранного элемента -Csharp

Задача:

Найти выбранный элемент RadioButton из заранее неизвестного их количества в GroupBox или Panel.

Решение:

Для решения создадим форму с groupBox и поместим туда несколько radioButton.

radiobuttons

Затем прописываем следующий код.

Листинг прохода по всем radioButtons

public void radioButtons_Click(object sender, EventArgs e)
{
foreach (Control control in groupBox1.Controls)
{
// Проверка на принадлежность элемента управления к классу RadioButton:
if (control.GetType() == typeof(System.Windows.Forms.RadioButton))
 {
// Создание отдельного (именованного) объекта класса RadioButton:
RadioButton rbControl = (RadioButton)control;
// Вывод сообщения, содержащего текст выбранного элемента:
if (rbControl.Checked)
  {
MessageBox.Show("Выбран элемент: " + rbControl.Text,
"Пример использование коллекции Control",
MessageBoxButtons.OK, MessageBoxIcon.Information);

  }
 }
}//foreach
}