Работа с растровым изображениями
Автор: Yusuf1997 • Май 15, 2019 • Лабораторная работа • 3,445 Слов (14 Страниц) • 290 Просмотры
Цель работы: изучить, как производятся двухмерные преобразования с помощью однородных координат и матрицы преобразования 3x3. Написать и отладить программу для 2D преобразований
Практическая часть:
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 WindowsFormsApplication4
{
public partial class Form1 : Form
{
double[,] T = new double[,] { { Math.Cos(0.9), Math.Sin(0.9), 0 }, { -Math.Sin(0.9), Math.Cos(0.9), 0 }, { 0, 0, 1 } };
public Form1()
{
InitializeComponent();
}
//уменьшение фигуры
private void button1_Click(object sender, EventArgs e)
{
T[2, 2] = T[2, 2] + 1;
Invalidate();
}
//увеличение фигуры
private void button2_Click(object sender, EventArgs e)
{
T[2, 2] = T[2, 2] - 0.1;
Invalidate();
}
//перемещение направо
private void button3_Click(object sender, EventArgs e)
{
T[2, 0] = T[2, 0] + 1;
Invalidate();
}
//в исходное положение
private void button4_Click(object sender, EventArgs e)
{
T = new double[,] { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } };
Invalidate();
}
//перемещение вверх
private void button5_Click(object sender, EventArgs e)
{
T[2, 1] = T[2, 1] + 1;
Invalidate();
}
//перемещение налево
private void button6_Click(object sender, EventArgs e)
{
T[2, 0] = T[2, 0] - 1;
Invalidate();
}
//перемещение вниз
private void button7_Click(object sender, EventArgs e)
{
T[2, 1] = T[2, 1] - 1;
Invalidate();
}
//отражение относительно Ox
private void button8_Click(object sender, EventArgs e)
{
T[1, 1] = -1;
Invalidate();
}
//отражение относительно Oy
private void button9_Click(object sender, EventArgs e)
{
T[0, 0] = -1;
Invalidate();
}
//отражение отнасительно Y = x;
private void button10_Click(object sender, EventArgs e)
{
T[1, 1] = -1;
T[0, 0] = -1;
Invalidate();
}
//Поворот вокруг точки.
int i = 0;
private void button11_Click(object sender, EventArgs e)
{
if (T[0, 0] == 1 && T[0, 1] == 0 && T[0, 2] == 0 && T[1, 0] == 0 && T[1, 1] == 1 && T[1, 2] == 0 && T[2, 0] == 0 && T[2, 1] == 0 && T[2, 2] == 1)
...