Tải bản đầy đủ (.doc) (35 trang)

Viết chương trình thực hiện các phép tịnh tiến, phép quay, phép co dãn, phép đối xứng qua điểm m(x0,y0), đối xứng qua đường thẳng và cho thực hiện từng chương trình tùy chọn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (741.74 KB, 35 trang )

Bài tập lớn môn: Đồ họa máy tính
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
******
BÁO CÁO BÀI TẬP LỚN
MÔN : ĐỒ HỌA MÁY TÍNH
Đề tài 12 :Viết chương trình thực hiện các phép tịnh tiến, phép quay, phép co dãn,
phép đối xứng qua điểm M(x0,y0), đối xứng qua đường thẳng và cho thực hiện
từng chương trình tùy chọn
Giảng viên hướng dẫn : Ths.Nguyễn Cẩm Ngoan
Sinh viên thực hiện : Phạm Hồng Chung
Nguyễn Đức Thoan

1
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
MỤC LỤC
Lời nói đầu 3
I. Các hàm đồ họa trong C# 4
II. Các phép biến đổi hình học cơ bản 4
1. Phép tịnh tiến: 4
2. Phép quay 5
3. Phép đối xứng 6
Chương II. Thiết kế và cài đặt chương trình 9
I. Thiết kế chương trình 9
1. Form chính 9
II. Cài đặt chương trình 17
Chương III: Tổng kết 40
2
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính


Lời nói đầu
Có câu rằng “một hình ảnh bằng cả nghìn lời nói ”. Điều đó thật không thể phủ nhận.
Và rõ ràng là nếu hiển thị thông tin chỉ với các ký hiệu, chữ cái, chữ số không thôi thì
không thể hấp dẫn và dễ hiểu như khi có thêm biểu diễn đồ họa. Kỹ thuật đồ hoạ cũng
là công cụ không thể thiếu trong các ngành khoa học kỹ thuật, giáo dục, nghệ thuật,
giải trí, quảng cáo (để diễn đạt máy móc thiết bị, kiến trúc, cấu trúc cơ thể, thông tin
thiên văn địa lý, hình ảnh minh hoạ ). Chính vì vậy, đồ họa là một vấn đề được quan
tâm trong ngành công nghệ thông tin.
Cùng với sự phát triển của tin học, kỹ thuật đồ họa trên máy vi tính, ngày càng trở nên
tinh xảo. Giao diện các phần mềm ngày nay trở nên thân thiện, đẹp mắt nhờ các thể
hiện đồ họa. Sự hổ trợ của tin học cho các ngành khác trở nên đắc lực hơn nhờ khả
năng đồ họa vi tính, trong đó có ngành giáo dục. Mục tiêu để tài chúng em làm là xây
dựng một chương trình trợ giúp các em học sinh Trung học cơ sở học các phép biến
đổi hình học cơ sở.
Tuy nhiên,trong quá trình nghiên cứu không thể không tránh khỏi những hạn chế và
thiếu sót, nên rất mong được sự chỉ bảo, góp ý của quý Thầy Cô và bạn bè. Chúng em
cũng xin chân thành cảm ơn cô giáo Vũ Minh Yến giảng viên khoa công nghệ thông
tin trường Đại học Công Nghiệp Hà Nội đã giúp đỡ chúng em hoàn thành đề tài này.
3
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
Chương I. Giới thiệu các hàm đồ họa C# và các phép biến đổi hình học.
I. Các hàm đồ họa trong C#.
-Point(float x, float y) : với x, y là tọa độ của một điểm để xác định một điểm.
-Pen(Color color,float x ): bút vẽ vói màu color và độ rộng nét vẽ bằng x.
-Brush(Color color): cọ vẽ dùng để vẽ và tô một hình nào đó bằng màu tô color.
-DrawLine( Pen pen,float x1, float y1,float x2, float y2): hàm vẽ một đoạn thẳng
bằng bút vẽ pen nối hai điểm a(x1,y1) và b(x2,y2).
-DrawRectangle(Pen pen, float x,float y, float a, float b) : hàm vẽ một hình chữ
nhật bằng bút vẽ pen có tọa độ đỉnh trái trên là (x,y), có chiều rộng là a, chiều dài là b.

-DrawElipse(Pen pen, float x,float y, float a, float b): hàm vẽ một hình elip bằng
bút vẽ pen nội tiếp hình chữ nhật có tọa độ đỉnh trái trên là (x,y), có chiều rộng là a,
chiều dài là b.
-DrawPolygon(Pen pen,Point[] dagiac):hàm vẽ các đường thẳng nối liền các điểm
có trong mảng dagiac thành một hình đa giác lồi.
-FillRectangle(Brush brush, float x,float y, float a, float b) : hàm vẽ và tô màu một
hình chữ nhật như DrawRectangle bằng cọ vẽ brush.
-FillElipse(Brush brush, float x,float y, float a, float b): : hàm vẽ và tô màu một
hình elip như DrawElipse bằng cọ vẽ brush.
-FillPolygon(Brush brush, Point[] dagiac ): hàm vẽ và tô màu một hình đa giác
như DrawPolygon bằng cọ vẽ brusII.2.Các phép biến đổi trong không gian hai chiều:
II. Các phép biến đổi hình học cơ bản.
1. Phép tịnh tiến:
- Là phép biến đổi dùng để chuyển đối tượng từ vị trí này sang vị trí khác theo
vectơ cho trước.
4
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
Hình 1. Tịnh tiến
Ví dụ như trong hình minh họa trên, tịnh tiến 1 đối tượng đồ họa cũng tương tự
như đối với 1 điểm.
Với công thức biến đổi:
{
'
'
x x dx
y y dy
= +
= +
Tương ứng là ma trận biến đổi:

1 0 0
0 1 0
1dx dy
 
 
 
 
 
Trong đó:
( )
' ', 'M x y
là ảnh của phép tịnh tiến
( )
,M x y
theo vector
( )
,v dx dy
r
.
*Chú ý: các phép biến đổi phải thực hiện theo thứ tự trên vì ta có dùng các phép nhân
giữa các ma trận,nếu thay đổi vị trí có thể thay đổi ma trận của phép biến đổi.
2. Phép quay
- Phép quay làm thay đổi hướng của đối tượng. Một phép quay đòi hỏi phải có
tâm quay, góc quay. Góc quay dương thường được qui ước là chiếu ngược chiều kim
đồng hồ.
5
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
Ta có công thức biến đổi của phép quay điểm P(x,y) quanh gốc tọa độ góc θ:


{
x' = x.cos - y.sin
y' = x.sin + y.cos

θ θ
θ θ
Ma trận biến đổi:
os sin 0
sin cos 0
0 0 1
c
θ θ
θ θ
 
 

 
 
 
Hình 2: phép quay điểm M một góc α qunah tâm của hệ trục
*Chú ý: các phép biến đổi phải thực hiện theo thứ tự trên vì ta có dùng các phép nhân
giữa các ma trận,nếu thay đổi vị trí có thể thay đổi ma trận của phép biến đổi.
3. Phép đối xứng
- Phép đối xứng trục có thể xem là phép quay quanh trục hoặc tâm đối xứng một
góc 180
0
.
+ Đối xứng qua tâm:
Hình 3: Phép đối xứng qua tâm bất kì
Công thức biến đổi:




−=
−=
yyMy
xxMx
.2'
.2'
6
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
Ma trận biến đổi tương ứng là:










−−

100
10
001
+ Phép đối xứng qua đường thẳng song song với Ox:
Hình 4. Phép đối xứng qua đường thẳng song song với Ox

Công thức biến đổi:



−=
=
yyMy
xx
.2'
'
Ma trận biến đổi tương ứng:











100
010
001
+ Phép đối xứng qua đường thẳng song song với Oy:
Hình 5. Phép đối xứng qua đường thẳng song song với Oy
7
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính

Công thức biến đổi:



=
−=
yy
xxMx
'
.2'
Ma trận biến đổi tương ứng:











100
010
001
8
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
Chương II. Thiết kế và cài đặt chương trình.
I. Thiết kế chương trình

1. Form chính
• Các chức năng của chương trình:
- Vẽ hình:
+ Vẽ hình tròn:
Người dùng chọn vẽ hình tròn sau đó điền đầy đủ thông tin của hình tròn như
tọa độ tâm, bán kính rồi nhấn nút vẽ hình.
Hàm vẽ hình tròn:
void VeHinhTron(Pen p,float x, float y, float r)
{
g.DrawEllipse(p, x + x0 - r, y0 - y - r, 2 * r, 2 * r);
g.DrawRectangle(p, new Rectangle(new Point(Convert.ToInt32(x0+x), Convert.ToInt32(y0-y)), new Size(1, 1)));
}
9
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
+ Vẽ tam giác:
Người dùng chọn vẽ tam giác sau đó điền đầy đủ thông tin của hình tam giác
như tọa độ 3 đỉnh tam giác rồi nhấn nút vẽ hình.
- Hàm vẽ hình tam giác:
void VeTamGiac(Pen p,float x1,float y1,float x2,float y2,float x3,float y3)
{
g.DrawLine(p, x1+x0, -y1+y0, x2+x0, -y2+y0);
g.DrawLine(p, x2+x0, -y2+y0, x3+x0, -y3+y0);
g.DrawLine(p, x3+x0, -y3+y0, x1+x0, -y1+y0);
}
10
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
+Vẽ tứ giác:
Người dùng chọn vẽ tam giác sau đó điền đầy đủ thông tin của hình tam giác

như tọa độ 3 đỉnh tam giác rồi nhấn nút vẽ hình.
- Hàm vẽ tứ giác:
void VeTuGiac(Pen p,float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
{
g.DrawLine(p, x1 + x0, -y1 + y0, x2 + x0, -y2 + y0);
g.DrawLine(p, x2 + x0, -y2 + y0, x3 + x0, -y3 + y0);
g.DrawLine(p, x3 + x0, -y3 + y0, x4 + x0, -y4 + y0);
g.DrawLine(p, x4 + x0, -y4 + y0, x1 + x0, -y1 + y0);
}
11
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
- Các phép biến đổi hình học:
+ Phép tịnh tiến:
Người dùng chọn Phép tịnh tiến sau đó nhập tọa độ điểm đầu và điểm cuối của
vectơ mà ta cần tịnh tiến theo rồi nhấn thực hiện.
12
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
+ Phép quay:
Người dùng chọn Phép quay sau đó nhập tọa độ tâm quay và góc quay rồi nhấn
thực hiện.
13
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
+ Phép đối xứng:
Phép đối xứng có 3 trường hợp:
- TH1: Đối xứng qua tâm bất kì:
Người dùng chọn Phép đối xứng qua tâm bất kì sau đó nhập tọa độ tâm đối
xứng rồi nhấn thực hiện.

14
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
- TH2: Đối xứng qua đường thẳng song song với Ox.
Người dùng chọn Phép đối xứng qua đường thẳng song song với Ox sau đó
nhập tung độ vào rồi nhấn thực hiện.
15
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
- TH3: Đối xứng qua đường thẳng song song với Oy.
Người dùng chọn Phép đối xứng qua đường thẳng song song với Oy sau đó
nhập hoành độ vào rồi nhấn nút thực hiện.
16
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
II. Cài đặt chương trình
CODE:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BTL_DHMT
{
public partial class Form1 : Form
{
public Form1()

{
InitializeComponent();
}
#region khai báo chung
Graphics g;
Brush b = new SolidBrush(Color.Blue);
Pen p = new Pen(Color.Blue);
float xmax, ymax, x0, y0, tlx, tly;
float ghtrai, ghphai, ghtren, ghduoi;
float x1, x2, x3, x4, y1, y2, y3, y4, r;
float x11, x12, x13, x14, y11, y12, y13, y14;
#endregion
private void Form1_Load(object sender, EventArgs e)
{
g = pictureBox1.CreateGraphics();
cbxHinhVe.Items.Add("Hình tròn");
cbxHinhVe.Items.Add("Tam giác");
cbxHinhVe.Items.Add("T giác"ứ );
cbxDoiXung.Items.Add("Qua tâm b t kì"ấ );
cbxDoiXung.Items.Add("Qua đ ng th ng song song v i Ox"ườ ẳ ớ );
cbxDoiXung.Items.Add("Qua đ ng th ng song song v i Oy"ườ ẳ ớ );
}
private void cbxHinhVe_SelectedIndexChanged(object sender, EventArgs e)
{
lbThongBao.Visible = true;
17
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
if (cbxHinhVe.Text == "Hình tròn")
{

txtx2.Enabled = false;
txtx3.Enabled = false;
txtx4.Enabled = false;
txty2.Enabled = false;
txty3.Enabled = false;
txty4.Enabled = false;
txtR.Enabled = true;
lbThongBao.Text = "Nh p t a đ tâm và bán kính"ậ ọ ộ ;
}
if (cbxHinhVe.Text == "Tam giác")
{
txtx2.Enabled = true;
txty2.Enabled = true;
txtx3.Enabled = true;
txtx4.Enabled = false;
txty3.Enabled = true;
txty4.Enabled = false;
txtR.Enabled = false;
lbThongBao.Text = "Nh p t a đ 3 đ nh"ậ ọ ộ ỉ ;
}
if (cbxHinhVe.Text == "T giác"ứ )
{
txtx2.Enabled = true;
txty2.Enabled = true;
txtx3.Enabled = true;
txtx4.Enabled = true;
txty3.Enabled = true;
txty4.Enabled = true;
txtR.Enabled = false;
lbThongBao.Text = "Nh p t a đ 4 đ nh"ậ ọ ộ ỉ ;

}
txtx1.ResetText();
txtx2.ResetText();
txty1.ResetText();
txty2.ResetText();
txtR.ResetText();
txtx4.ResetText();
txtx3.ResetText();
txty4.ResetText();
txty3.ResetText();
}
18
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
void VeTrucToaDo()
{
g.DrawLine(Pens.Black, x0, 0, x0, ymax);
g.DrawLine(Pens.Black, x0 + 5, 5, x0, 0);
g.DrawLine(Pens.Black, x0 - 5, 5, x0, 0);
g.DrawLine(Pens.Black, 0, y0, xmax, y0);
g.DrawLine(Pens.Black, xmax-5, y0 - 5, xmax, y0);
g.DrawLine(Pens.Black, xmax-5, y0 + 5, xmax, y0);
g.DrawString("O", new Font("Times New Roman", 18), Brushes.Red, x0-20, y0);
g.DrawString("x", new Font("Times New Roman", 15), Brushes.Red, xmax-20, y0);
g.DrawString("y", new Font("Times New Roman", 15), Brushes.Red, x0, 10);
for (int i = 1; i < ghtrai + ghphai; i++)
g.DrawLine(Pens.Black, i * tlx, y0 + 2, i * tlx, y0 - 2);
for (int i = 1; i < ghtren + ghduoi; i++)
g.DrawLine(Pens.Black, x0 + 2, i * tly, x0 - 2, i * tly);
}

void VeHinhTron(Pen p,float x, float y, float r)
{
g.DrawEllipse(p, x + x0 - r, y0 - y - r, 2 * r, 2 * r);
g.DrawRectangle(p, new Rectangle(new Point(Convert.ToInt32(x0+x), Convert.ToInt32(y0-y)), new Size(1, 1)));
}
void VeTamGiac(Pen p,float x1,float y1,float x2,float y2,float x3,float y3)
{
g.DrawLine(p, x1+x0, -y1+y0, x2+x0, -y2+y0);
g.DrawLine(p, x2+x0, -y2+y0, x3+x0, -y3+y0);
g.DrawLine(p, x3+x0, -y3+y0, x1+x0, -y1+y0);
}
void VeTuGiac(Pen p,float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
{
g.DrawLine(p, x1 + x0, -y1 + y0, x2 + x0, -y2 + y0);
g.DrawLine(p, x2 + x0, -y2 + y0, x3 + x0, -y3 + y0);
g.DrawLine(p, x3 + x0, -y3 + y0, x4 + x0, -y4 + y0);
g.DrawLine(p, x4 + x0, -y4 + y0, x1 + x0, -y1 + y0);
}
private void btnVe_Click(object sender, EventArgs e)
{
if (txtGioiHanTrai.Text=="")
{
MessageBox.Show("Ch a v h t a đ "ư ẽ ệ ọ ộ , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtGioiHanTrai.Focus();
19
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
}
if (cbxHinhVe.Text == "")
{

MessageBox.Show("Ch a ch n hình v "ư ọ ẽ , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
cbxHinhVe.Focus();
}
else
{
if (cbxHinhVe.Text == "Hình tròn")
{
if (txtx1.Text == "" || txty1.Text == "" || txtR.Text == "")
{
MessageBox.Show("D li u nh p vào ch a đ "ữ ệ ậ ư ủ , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtx1.Focus();
}
else
{
VeHinhTron(Pens.Blue, tlx * float.Parse(txtx1.Text), tly * float.Parse(txty1.Text), tly * float.Parse(txtR.Text));
g.DrawString("I", new Font("Times New Roman", 15), Brushes.Blue, x0 + tlx * float.Parse(txtx1.Text), y0 - tly *
float.Parse(txty1.Text));
x11 = x1 = float.Parse(txtx1.Text);
y11 = y1 = float.Parse(txty1.Text);
r = float.Parse(txtR.Text);
btnVe.Enabled = false;
cbxHinhVe.Enabled = false;
}
}
if (cbxHinhVe.Text == "Tam giác")
{
if (txtx1.Text == "" || txtx2.Text == "" || txty1.Text == "" || txty2.Text == "" || txtx3.Text == "" || txty3.Text == "")
{
MessageBox.Show("D li u nh p vào ch a đ "ữ ệ ậ ư ủ , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtx1.Focus();

}
else
{
VeTamGiac(Pens.Blue, tlx * float.Parse(txtx1.Text), tly * float.Parse(txty1.Text), tlx * float.Parse(txtx2.Text), tly *
float.Parse(txty2.Text), tlx * float.Parse(txtx3.Text), tly * float.Parse(txty3.Text));
g.DrawString("A", new Font("Times New Roman", 12), Brushes.Blue, x0 + tlx * float.Parse(txtx1.Text), y0 - tly *
float.Parse(txty1.Text));
g.DrawString("B", new Font("Times New Roman", 12), Brushes.Blue, x0 + tlx * float.Parse(txtx2.Text), y0 - tly *
float.Parse(txty2.Text));
g.DrawString("C", new Font("Times New Roman", 12), Brushes.Blue, x0 + tlx * float.Parse(txtx3.Text), y0 - tly *
float.Parse(txty3.Text));
x11 = x1 = float.Parse(txtx1.Text);
20
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
x12 = x2 = float.Parse(txtx2.Text);
x13 = x3 = float.Parse(txtx3.Text);
y11 = y1 = float.Parse(txty1.Text);
y12 = y2 = float.Parse(txty2.Text);
y13 = y3 = float.Parse(txty3.Text);
btnVe.Enabled = false;
cbxHinhVe.Enabled = false;
}
}
if (cbxHinhVe.Text == "T giác"ứ )
{
if (txtx1.Text == "" || txtx2.Text == "" || txty1.Text == "" || txty2.Text == "" || txtx3.Text == "" || txty3.Text == "" ||
txtx4.Text == "" || txty4.Text == "")
{
MessageBox.Show("D li u nh p vào ch a đ "ữ ệ ậ ư ủ , "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

txtx1.Focus();
}
else
{
VeTuGiac(Pens.Blue, tlx * float.Parse(txtx1.Text), tly * float.Parse(txty1.Text), tlx * float.Parse(txtx2.Text), tly *
float.Parse(txty2.Text), tlx * float.Parse(txtx3.Text), tly * float.Parse(txty3.Text), tlx * float.Parse(txtx4.Text), tly *
float.Parse(txty4.Text));
g.DrawString("A", new Font("Times New Roman", 12), Brushes.Blue, x0 + tlx * float.Parse(txtx1.Text), y0 - tly *
float.Parse(txty1.Text));
g.DrawString("B", new Font("Times New Roman", 12), Brushes.Blue, x0 + tlx * float.Parse(txtx2.Text), y0 - tly *
float.Parse(txty2.Text));
g.DrawString("C", new Font("Times New Roman", 12), Brushes.Blue, x0 + tlx * float.Parse(txtx3.Text), y0 - tly *
float.Parse(txty3.Text));
g.DrawString("D", new Font("Times New Roman", 12), Brushes.Blue, x0 + tlx * float.Parse(txtx4.Text), y0 - tly *
float.Parse(txty4.Text));
x11 = x1 = float.Parse(txtx1.Text);
x12 = x2 = float.Parse(txtx2.Text);
x13 = x3 = float.Parse(txtx3.Text);
x14 = x4 = float.Parse(txtx4.Text);
y11 = y1 = float.Parse(txty1.Text);
y12 = y2 = float.Parse(txty2.Text);
y13 = y3 = float.Parse(txty3.Text);
y14 = y4 = float.Parse(txty4.Text);
btnVe.Enabled = false;
cbxHinhVe.Enabled = false;
}
}
}
}
21

Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
private void btnReset_Click(object sender, EventArgs e)
{
txtx1.ResetText();
txtx2.ResetText();
txty1.ResetText();
txty2.ResetText();
txtGioiHanDuoi.ResetText();
txtGioiHanPhai.ResetText();
txtGioiHanTrai.ResetText();
txtGioiHanTrai.Focus();
txtGioiHanTren.ResetText();
txtR.ResetText();
txtx4.ResetText();
txtx3.ResetText();
txty4.ResetText();
txty3.ResetText();
g.Clear(Color.White);
txtx2.Enabled = true;
txty2.Enabled = true;
txtx3.Enabled = true;
txtx4.Enabled = true;
txty3.Enabled = true;
txty4.Enabled = true;
txtR.Enabled = true; ;
cbxHinhVe.ResetText();
cbxDoiXung.ResetText();
txtxA.ResetText();
txtyA.ResetText();

txtxB.ResetText();
txtyB.ResetText();
txtxM.ResetText();
txtyM.ResetText();
txtAlpha.ResetText();
txtx.ResetText();
txty.ResetText();
btnVeTruc.Enabled = true;
btnVe.Enabled = true;
cbxHinhVe.Enabled = true;
lbThongBao.Visible = false;
}
22
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
private void btnNhapLai_Click(object sender, EventArgs e)
{
g.Clear(Color.White);
xmax = pictureBox1.Width;
ymax = pictureBox1.Height;
ghtrai = float.Parse(txtGioiHanTrai.Text);
ghphai = float.Parse(txtGioiHanPhai.Text);
ghtren = float.Parse(txtGioiHanTren.Text);
ghduoi = float.Parse(txtGioiHanDuoi.Text);
tlx = xmax / (ghtrai + ghphai);
tly = ymax / (ghtren + ghduoi);
x0 = tlx * ghtrai;
y0 = tly * ghtren;
VeTrucToaDo();
btnVeTruc.Enabled = false;

btnVe.Enabled = true;
cbxHinhVe.Enabled = true;
txtx1.ResetText();
txtx1.Focus();
txtx2.ResetText();
txty1.ResetText();
txty2.ResetText();
txtR.ResetText();
txtx4.ResetText();
txtx3.ResetText();
txty4.ResetText();
txty3.ResetText();
}
private void btnVeTruc_Click(object sender, EventArgs e)
{
try
{
xmax = pictureBox1.Width;
ymax = pictureBox1.Height;
ghtrai = float.Parse(txtGioiHanTrai.Text);
ghphai = float.Parse(txtGioiHanPhai.Text);
ghtren = float.Parse(txtGioiHanTren.Text);
ghduoi = float.Parse(txtGioiHanDuoi.Text);
tlx = xmax / (ghtrai + ghphai);
tly = ymax / (ghtren + ghduoi);
x0 = tlx * ghtrai;
y0 = tly * ghtren;
VeTrucToaDo();
23
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội

Bài tập lớn môn: Đồ họa máy tính
btnVeTruc.Enabled = false;
}
catch(Exception)
{
MessageBox.Show("Ch a nh p gi i h n tr c t a đ "ư ậ ớ ạ ụ ọ ộ ,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
txtGioiHanTrai.Focus();
}
}
private void txtGioiHanTrai_TextChanged(object sender, EventArgs e)
{
txtGioiHanPhai.Text = txtGioiHanTrai.Text;
txtGioiHanTren.Text = txtGioiHanTrai.Text;
txtGioiHanDuoi.Text = txtGioiHanTrai.Text;
}
private void txtGioiHanPhai_TextChanged(object sender, EventArgs e)
{
txtGioiHanTrai.Text = txtGioiHanPhai.Text;
txtGioiHanTren.Text = txtGioiHanPhai.Text;
txtGioiHanDuoi.Text = txtGioiHanPhai.Text;
}
private void txtGioiHanTren_TextChanged(object sender, EventArgs e)
{
txtGioiHanDuoi.Text = txtGioiHanTren.Text;
txtGioiHanTrai.Text = txtGioiHanTren.Text;
txtGioiHanPhai.Text = txtGioiHanTren.Text;
}
private void txtGioiHanDuoi_TextChanged(object sender, EventArgs e)
{
txtGioiHanTren.Text = txtGioiHanDuoi.Text;

txtGioiHanTrai.Text = txtGioiHanDuoi.Text;
txtGioiHanPhai.Text = txtGioiHanDuoi.Text;
}
private void txtGioiHanTrai_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
e.Handled = true;
}
private void txtGioiHanPhai_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
24
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội
Bài tập lớn môn: Đồ họa máy tính
e.Handled = true;
}
private void txtGioiHanTren_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
e.Handled = true;
}
private void txtGioiHanDuoi_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
e.Handled = true;
}
private void txtx1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar)&&e.KeyChar!=(Convert.ToChar("-"))&&e.KeyChar!
=(Convert.ToChar(".")))

e.Handled = true;
}
private void txty1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && e.KeyChar != (Convert.ToChar("-")) && e.KeyChar !=
(Convert.ToChar(".")))
e.Handled = true;
}
private void txtx2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && e.KeyChar != (Convert.ToChar("-")) && e.KeyChar !=
(Convert.ToChar(".")))
e.Handled = true;
}
private void txty2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && e.KeyChar != (Convert.ToChar("-")) && e.KeyChar !=
(Convert.ToChar(".")))
e.Handled = true;
}
private void txtx3_KeyPress(object sender, KeyPressEventArgs e)
{
25
Lớp Khoa học máy tính 3 k4 - Khoa CNTT - Trường ĐH Công nghiệp Hà Nội

×