31868

Редагування растрових зображень

Лабораторная работа

Информатика, кибернетика и программирование

У класі форми обявити обєкти доступні для різних методів PictureBox pictureBox1; Lbel lbel1; Point spotClicked; 6.Size = new Size640 480; Завантажити малюнок в елемент PictureBox і вставити у форму додати до проекту відповідну папку з малюнком або вказати адресу малюнка pictureBox1 = new PictureBox; pictureBox1.jpg ; pictureBox1.SizeMode = PictureBoxSizeMode.

Украинкский

2013-09-01

74.5 KB

3 чел.

Лабораторна робота 2. Редагування растрових зображень

Завдання 1. Створення додатку для редагування растрових зображень (затемнення та підсвічування у вибраній ділянці малюнка)  у режимі перегляду кода з реакцією на події користувача

 

Методи, що працюють з мишею

OnClick(EventArgs e)

Виконане клацання кнопкою миші.

OnDoubleClick(EventArgs e)

 Виконане подвійне клацання кнопкою миші.

OnMouseDown(MouseEventArgs e)

Натиснута ліва кнопка миші.

OnMouseHover(MouseEventArgs e)

Покажчик миші зупинений десь після переміщення.

OnMouseMove(MouseEventArgs e)

Покажчик миші переміщений.

OnMouseUp(MouseEventArgs e)

Відпущена ліва кнопка миші

 

Методи, що працюють з клавіатурою

OnKeyDown(KeyEventArgs e)

Клавіша натиснута.

OnKeyPress(KeyPressEventArgs e)

Клавіша натиснута і відпущена.

OnKeyUp(KeyEventArgs e)

Натиснута клавіша відпущена.

 

 

1. Створити новий проект Windows Forms ( власне ім'я + lab2+1).

2. Знищити файл Form1.cs

3. Відредагувати файл Program.cs

 

using System;

using System.Windows.Forms;

namespace назва проекту

{

public class MyForm : System.Windows.Forms.Form

{

public MyForm()

{

}

[STAThread]

static void Main()

{

Application.Run(new MyForm());

}

}

}

 

4.Забезпечити використання простору імен System.Drawing, що містить більшість класів, структур, перерахувань і делегатів, які забезпечують базову функціональність малювання.

 

using System.Drawing;

 

 

5. У  класі форми об'явити об'єкти, доступні для різних методів

 

  PictureBox pictureBox1;

  Label label1;

  Point spotClicked;

 

6. До конструктора форми додати:

Розміри вікна

   

    this.Size = new Size(640, 480);

   

Завантажити малюнок в елемент PictureBox і вставити у форму (додати до проекту відповідну папку з малюнком, або вказати адресу малюнка)

   

    pictureBox1 = new PictureBox();

    pictureBox1.Image = (Image)new Bitmap(@"../../images/Водяные лилии.jpg");

    pictureBox1.SizeMode = PictureBoxSizeMode.Normal;

    pictureBox1.Dock = DockStyle.Fill;

    this.Controls.Add(pictureBox1);

   

Додати мітку з інструкціями в нижню частину екрану

   

    label1 = new Label();

    label1.BackColor = Color.Wheat;

    label1.Dock = DockStyle.Bottom;

    label1.Text =

    "При натисненій лівій кнопці миші можна збільшити яскравість виділеного прямокутника" +

    "Натиснута права кнопка зменшує яскравість прямокутника ";

    label1.TextAlign = ContentAlignment.MiddleCenter;

    this.Controls.Add(label1);

   

Прив'язати PictureBox до обробників подій миші

   

    this.pictureBox1.MouseDown += new MouseEventHandler(MouseButtonIsDown);

    this.pictureBox1.MouseUp += new MouseEventHandler(MouseButtonIsUp);

 

7. До класу форми додати

 

Обробник події, що спрацьовує  при натисненні кнопки миші

 

public void MouseButtonIsDown(object sender, MouseEventArgs e)

{

  // Запам'ятовуємо точку, в якій відбулося натиснення кнопки миші.

  // Коли кнопка буде відпущена - запам'ятати її координати

 

  spotClicked.X = e.X;// горизонтальна координата

  spotClicked.Y = e.Y;// вертикальна координата

}

 

Обробник подій, що спрацьовує при ВІДЖИМАННІ кнопки миші

 

 

public void MouseButtonIsUp(object sender, MouseEventArgs e)

{

  // Користувач відпустив кнопку миші

 

  // Створюємо прямокутник , що обмежує

  // область зображення, з якою користувач працюватиме

 

  Rectangle r = new Rectangle();

 

  // Лівий верхній кут прямокутника відповідає точці

  // у якій була натиснута кнопка миші.

 

  r.X = spotClicked.X;

  r.Y = spotClicked.Y;

 

  // Ширина і висота прямокутника обчислюється

  // шляхом віднімання координат миші в точці натиснення

  // з поточних координат (у точці віджимання кнопки).

 

  r.Width = e.X – spotClicked.X;

  r.Height = e.Y – spotClicked.Y;

 

  if (e.Button == MouseButtons.Left)

  {

    /* Якщо була натиснута і відпущена ліва кнопка миші

    викликаємо метод, що підсвічує область зображення */

    ChangeLightnessL(r);

   

  else

  {

    // Якщо була натиснута права кнопка, викликаємо

    // метод, що затемнює  область зображення

   

    ChangeLightnessR(r);

  }

}

 

Додати метод, що збільшує яскравість вибраної ділянки зображення

шляхом збільшення яскравості кожного пікселя цієї ділянки

public void ChangeLightnessL(Rectangle rect)

{

  int newRed, newGreen, newBlue;

  Color pixel;

 

  // Копіюємо зображення, завантажене в PictureBox

 

  System.Drawing.Bitmap picture = new

  Bitmap(this.pictureBox1.Image);

 

  // Операція збільшення яскравості може зайняти багато часу

  // користувача попереджають, якщо вибрана велика ділянка.

 

  if ((rect.Width > 150) || (rect.Height > 150))

  {

   

    DialogResult result = MessageBox.Show(

    "Виділена область велика! " +

    "Зміна яскравості може вимагати значного часу!",

    "Warning", MessageBoxButtons.OKCancel);

   

    // При натисненні кнопки Cancel (Відміна) виходимо з методу

    // і повертаємося до місця його виклику

   

    if (result == DialogResult.Cancel) return;

  }

  /* Перебираємо послідовно всі пікселі даної ділянки

  і подвоюємо значення яскравості компонент RGB пікселів */

 

  // Перебір по горизонталі зліва направо...

 

  for (int x = rect.X; x < rect.X + rect.Width; x++)

  {

    // і по вертикалі зверху вниз...

   

    for (int у = rect.Y; у < (rect.Y + rect.Height); y++)

    {

      // Прочитуємо поточний піксель

     

      pixel = picture.GetPixel(x, у);

     

      // Збільшуємо яскравість колірних компонент пікселя

     

      newRed = (int)Math.Round(pixel.R * 2.0, 0);

      if (newRed > 255) newRed = 255;

      newGreen = (int)Math.Round(pixel.G * 2.0, 0);

      if (newGreen > 255) newGreen = 255;

      newBlue = (int)Math.Round(pixel.B * 2.0, 0);

      if (newBlue > 255) newBlue = 255;

     

      // Привласнюємо пікселю нові колірні значення

     

      picture.SetPixel

      (x, у, Color.FromArgb(

      (byte)newRed, (byte) newGreen, (byte) newBlue));

    }

  }

  // Поміщаємо змінену копію зображення в PictureBox

  // щоб зміни відобразилися на екрані

 

  this.pictureBox1.Image = picture;

  }

 

Метод, що зменшує яскравість вибраної ділянки зображення

шляхом зменшення яскравості кожного пікселя цієї ділянки ChangeLightnessR

написати самостійно

 

8. Відкомпілювати і запустити проект

 

Завдання 2. Виведення графічних зображень у режимі дизайну . Вивести власне зображення

 

1. Створити проект DisplayImage+ власне ім'я

2. Додати до класу Form1 поля

 

readonly Image piccy;

private readonly Point [] piccyBounds;

 

В конструкторі Form1 завантажити файл

 

public Form1()

{

InitializeComponent();

piccy = Image.FromFile(@"шлях до файлу");

AutoScrollMinSize = piccy.Size;

piccyBounds = new Point[3];

piccyBounds[0] = new Point(0,0); // верхній лівий

piccyBounds[1] = new Point(piccy.Width,0); // верхній правий

piccyBounds[2] = new Point(0,piccy.Height); // нижній лівий

}

 

 

Додати перевизначений метод OnPaint():

 

protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint(e);

Graphics dc = e.Graphics;

dc.ScaleTransform(1.0f, 1.0f);

dc.TranslateTransform(AutoScrollPosition.X, AutoScrollPosition.Y);

dc.DrawImage(piccy, piccyBounds);

}

 

Внести зміни до згенерованого IDE коду метода Form1.

Dispose():

 

protected override void Dispose(bool disposing)

{

piccy.Dispose();

if( disposing && (component != null))

{

components.Dispose();

}

base.Dispose(disposing );

}

 

Завдання 3. Змінити виведення зображення (використовуючи відповідні координати) :

-зменшити пропорційно зображення

-зменшити у 2 рази по вертикалі (стиснути)

-зменшити у 2 рази по горизонталі (розтягти)

 

 

 


 

А также другие работы, которые могут Вас заинтересовать

43385. Розробка інфологічної та даталогічної моделі 662 KB
  Для підприємств розроблена спеціальна база даних котра формує список співробітників за допомогою додавання їх в базу користувачем.4 Опис основних процедур перетворення даних 1. Для додавання розроблена відповідна форма в котрій забезпечено введення даних а саме: П. Табельний номер Дата прийому на роботу Оклад Після введення даних вони через компонент Tble котрий призначений для роботи з нашою базою даних bd1.
43386. Задачи статистического изучения загрязнения окружающей среды 315 KB
  Проблема защиты окружающей среды и природных ресурсов настолько важна что нет практически в мире государства которое бы в той или иной мере не пыталось ее решить. Существует множество концепций и методов анализа воздействия экономической деятельности на природную среду и обратного влияния природной среды на экономическую деятельность а также оценки ущерба от загрязнения окружающей среды и эффективности природоохранных мероприятий. Потери рабочего времени в результате повышенной заболеваемости; населения изза загрязнения окружающей среды...
43387. Информационный менеджмент, стратегия и политика организации 108.5 KB
  В круг задач информационного менеджмента входят также разработка внедрение эксплуатация и развитие автоматизированных информационных систем и сетей обеспечивающих деятельность предприятия организации. Деятельность любого предприятия зависит от степени воздействия на него внешней среды представляющей сферу прямого и косвенного воздействия АТП которые серьезно...
43388. Определение реакций опор твердого тела 2.53 MB
  Составим уравнения моментов сил относительно точки С и А.3 Составим уравнение равновесия для тела CD: ∑ Fkx = 0 отсюда RD = 0 Для всей конструкции: ∑ Fkx = 0; Q P1∙cos60 XB P2 = 0 откуда XB = 2 кН Составим уравнение моментов сил относительно точки А: ∑ MА= 0 Q∙2 M P1∙sin60∙2 P1∙cos60∙4 P2∙2 RD∙7 YB∙4 = 0 откуда YB = 7196 кН Подставляя найденные значения ХB и YB в уравнение 1 найдем: Итак при шарнирном соединении в точке С модуль реакции B меньше чем при соединении скользящей заделкой. Составим уравнение моментов...
43389. История развития социальной помощи в России 208 KB
  Это было выражено в более расширенной системе помощи которая охватывала и устоявшиеся группы населения и новые формы призрения и воспитания детей предупреждения обнищания населения. В России до начала XVIII века вообще не существовало какойлибо узаконенной формы общественного призрения детей. Первым проявил инициативу митрополит Иов организовавший в 1707 году на собственные средства в Холмовской Успенской обители заведение для призрения сирот и зазорнорожденных незаконнорожденных детей. После смерти Петра I за...
43390. Анализ основных аспектов и проблемных моментов обеспечения конкурентоспособности ООО «Основание» 454 KB
  Важным элементом конкурентоспособности фирмы является конкурентоспособность товара. Это такой уровень его экономических, технических и эксплуатационных параметров, который позволяет выдержать соперничество (конкуренцию) с другими аналогичными товарами на рынке. Кроме того, конкурентоспособность - сравнительная характеристика товара, содержащая комплексную оценку всей совокупности производственных, коммерческих, организационных и экономических показателей относительно она определяется совокупностью потребительских свойств данного товара-конкурента по степени соответствия общественным потребностям с учетом затрат на их удовлетворение, цен, условий поставки и эксплуатации в процессе производительного и (или) личного потребления.
43391. Эстетические аспекты и принципы ведения электронного маркетинга 324.5 KB
  Электронный маркетинг интернет магазин сбор данных обработка данных рекламные компании экономическая эффективность. В курсовой работе проводится оценка эффективности маркетинговой деятельности в сети Интернет проектируется и анализируется интернет-магазин рассматриваются эстетические аспекты и принципы ведения электронного маркетинга.2 Кодекс использования Интернета для маркетинговых целей Американской маркетинговой ассоциации. ПРОЕКТИРОВАНИЕ И АНАЛИЗ ИНТЕРНЕТМАГАЗИНА ООО...
43392. Механизм формирования валютного курса 187 KB
  Особенности национальной валюты Республики Беларусь. Таким инструментом выступают банковские операции по обмену иностранной валюты. Среди главных задач валютного регулирования в нашей республике выделяется проблема устранения разрыва котировок между курсами белорусского рубля на внутреннем и внешнем рынках и перехода к единому обменному курсу национальной валюты. Далее мировыми деньгами стали национальные валюты ведущих мировых держав кредитные деньги.
43393. Анализ основных аспектов и проблемных моментов обеспечения конкурентоспособности ООО «Бремен» 609.5 KB
  Цель работы определить основные аспекты и проблемные моменты обеспечения конкурентоспособности торговых организаций в Республике Беларусь. В процессе работы были изучены теоретические материалы по обеспечению конкурентоспособности торговых организаций определена сущность и содержание концепции конкурентоспособности приведены методы оценки и определены пути повышения конкурентоспособности торговой...