Bằng việc ứng dụng cơng nghệ tiên tiến, hàng loạt đứa công nghệ đời để phục vụ cho người từ việc cao vệ tinh, robot, thám hiểm mặt trăng, nghiên cứu khu vực nguy hiểm công việc ngày phần mềm quản lý, thiết bị báo cháy, game hay mạng xã hội Là sinh viên trường đại học công nghệ thông tin, kĩ sư phần mềm tương lai, chúng em có trách nhiệm kế thừa tinh hoa cơng nghệ phát triển, ứng dụng để tạo sản phẩm thực tế, phục vụ nhu cầu cần thiết người Qua khảo sát nghiên cứu thực tế, nhu cầu việc chụp ảnh, ghi lại khoảng khắc, tạo đoạn phim chất lượng, màu sắc đẹp, độ phân giải cao Minh chứng rõ ràng gã khổng lồ Apple liên tục trao dồi, phát triển camera chụp ảnh để tạo ảnh đẹp nhất, chân thực Bên cạnh thiết bị chụp ảnh tốt, thiếu phần mềm chỉnh sửa ảnh chất lượng, cách tay đắc lực cho nhiếp ảnh gia hay kể bạn trẻ thích chụp ảnh Nó gần xương sống cho ngành điện ảnh Theo khảo sát, trung bình điện thoại có 1-2 app chỉnh sửa ảnh số 2-3 bạn nữ Có hàng chục phần mềm chỉnh sửa ảnh tiếng mà bạn bắt gặp thương hiệu, logo qua ảnh đăng tải mạng xã hội ngày Như Ulike, B612, Snapseed, Picsart,
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2Mục lục
Chương 1: Mở đầu 3
Chương 2: Cơ sở lý thuyết 4
I Github 4
1 Github là gì ? 4
2 Tại sao sử dụng GitHub ? 4
2.1GitHub cho mọi người thấy khả năng code của thành viên 4
2.2 GitHub giúp từng cá nhân cải thiện code 5
2.3 GitHub là môi trường thực tế sau này 5
II C# 5
1 C# là gì ? 5
2 Đặc trưng của C# 5
2.1 C# Là ngôn ngữ đơn giản 5
2.2 C# là ngôn ngữ thuần hướng đối tượng 5
2.3 So sánh C# với 2 ngôn ngữ C và C++ 6
2.4 Nền tảng Net 6
III Visual Studio 7
1 Visual Studio là gì ? 7
2 Một số tính năng chính 7
2.1 Biên tập mã 7
2.2 Trình gỡ lỗi 7
2.3 Thiết kế 7
Chương 3: Quá trình thực hiện 8
I Thiết kế giao diện 8
1 Ý tưởng 9
2 Nội dung giao diện 9
2.1 Trung tâm xử lý 10
Trang 32.2 Thanh công cụ 11
2.1.1 File 11
2.1.2 Edit 12
2.1.3 Tools 13
2.1.4 View 14
2.1.5 Layer 14
2.1.6 Color 15
2.1.7 Filter 15
2.1.8 Help 16
2.3 Bảng chọn 16
2.3.1 Bảng màu 16
2.3.2 Bảng lệnh 17
2.3 Thanh lịch sử và kiểm soát layer 17
2.3.1 Thanh lịch sử 17
2.3.2 Thanh Layer 18
II Thực hiện Code 19
1 Tạo hình form 19
2 Chỉnh sửa ảnh 20
3 Chỉnh sửa màu 20
Chương 4: Kết quả đạt được 21
Chương 5: Tài liệu tham khảo 28
Chương 6: Danh sách thành viên 28
Trang 4Chương 1: Mở đầu
Con người đang sinh sống trong biển cả thông tin, trong từng giây, từng phút chúng ta đều tiếp xúc với tin tức một cách tự giác hoặc không tự giác Và xã hội càng phát triển thì cách thức con người tiếp xúc với tin tức càng thay đổi theo hướng tích cực Với những bước tiến như vũ bão những thập kỉ cuối của thế kỉ XX, Công nghệ thông tin đã tạo nên một diện mạo mới cho cuộc sống con người và mở ra cho nhân loại một kỉ nguyên mới - kỉ nguyên công nghệ thông tin
Có thể khẳng định CNTT đang giữ một vai trò quan trọng trong sự phát triển của loài người nói chung và sự phát triển kinh tế, chính trị, xã hội của một đất nước
Trong sự phát triển đó lại có vô vàn những nhánh phát triển nhỏ hơn, mà mỗi nhánh lại mang một đặc thù và vai trò riêng của nó Bằng việc ứng dụng các công nghệ tiên tiến, hàng loạt những đứa con của công nghệ đã ra đời để phục vụ cho con người từ những việc cao cả như vệ tinh, robot, thám hiểm mặt trăng, nghiên cứu các khu vực nguy hiểm cho đến những công việc hằng ngày như phần mềm quản lý, thiết bị báo cháy, game hay mạng xã hội
Là một sinh viên của trường đại học công nghệ thông tin, là kĩ sư phần mềm tương lai, chúng
em có trách nhiệm kế thừa những tinh hoa công nghệ và phát triển, ứng dụng nó để tạo ra những sản phẩm thực tế, phục vụ nhu cầu cần thiết của con người Qua khảo sát và nghiên cứu thực tế, nhu cầu về việc chụp ảnh, ghi lại những khoảng khắc, tạo ra những đoạn phim chất lượng, màu sắc đẹp, độ phân giải cao Minh chứng rõ ràng nhất là gã khổng lồ Apple đã liên tục trao dồi, phát triển camera chụp ảnh để tạo ra những bức ảnh đẹp nhất, chân thực nhất Bên cạnh một thiết bị chụp ảnh tốt, không thể thiếu những phần mềm chỉnh sửa ảnh chất lượng, nó là cách tay đắc lực cho các nhiếp ảnh gia hay kể cả những bạn trẻ thích chụp ảnh Nó gần như là xương sống cho ngành điện ảnh
Theo khảo sát, trung bình một chiếc điện thoại đều có ít nhất 1-2 app chỉnh sửa ảnh và con số này là 2-3 đối với các bạn nữ Có hàng chục phần mềm chỉnh sửa ảnh nổi tiếng mà bạn có thể bắt gặp những thương hiệu, logo qua những tấm ảnh được đăng tải trên mạng xã hội hằng ngày Như Ulike, B612, Snapseed, Picsart, Đó là những phần mềm chỉnh sửa ảnh phổ thông, dễ dàng sử dụng cho mọi người, ở mức chuyên sâu hơn, khó sử dụng hơn là các phần mềm chỉnh sửa ảnh chuyên nghiệp, mà thông dụng nhất, chính là đứa con của Adobe, Adobe Photoshop Bằng việc
sử dụng các giải thuật phức tạp, Photoshop gần như có thể làm mọi thứ theo ý bạn muốn, lượng chức năng đa dạng, phong phú đã tạo nên thương hiệu của photoshop
Chính vì thế, nhóm tụi em quyết định mô phỏng lại phần mềm photoshop, trong giới hạn về kiến thức và thời gian, nhóm chúng em sẽ cố gắng hết sức để tạo ra nhiều chức năng nhất và hoàn thiện sản phẩm một cách chu đáo nhất
Trang 5Chương 2: Cơ sở lý thuyết
Để thực hiện được đồ án này, nhóm em đã có một buổi gặp mặt riêng để phân chia nhiệm vụ
và xác định khối lượng công viêc, đồng thời vạch ra chiến lược thực hiện Bảng phân công công việc sẽ được kèm trong file
Nhận thấy đây là đồ án phức tạp, đòi hỏi từng thành viên phải code nhiều và am hiểu các thuật toán liên quan đến chỉnh sửa ảnh, nhóm tụi em đã quyết định chọn ra những công cụ hỗ trợ sau,
I Github
Vấn đề đầu tiên và cơ bản nhất khi làm việc nhóm đó là chúng ta phải làm việc với nhiều người Hay kể cả làm việc một mình thì việc quản lý source code là vô cùng quan trọng
Theo như nhóm tìm hiểu thì có 2 mô hình quản lý source code: Quản lý tập trung (SVN), Quản
lý phân tán (git) Mỗi hình thức đều có ưu và nhược điểm riêng Nhóm tụi em sẽ giới thiệu sơ qua về Github và cách nhóm sử dụng git để làm việc với nhau
1 Github là gì ?
GitHub là một dịch vụ nổi tiếng cung cấp kho lưu trữ mã nguồn Git cho các dự án phần
mềm Github có đầy đủ những tính năng của Git, ngoài ra nó còn bổ sung những tính năng về social để các developer tương tác với nhau Như vậy, GitHub sẽ:
Là công cụ giúp quản lý source code tổ chức theo dạng dữ liệu phân tán
Giúp đồng bộ source code của team lên 1 server
Hỗ trợ các thao tác kiểm tra source code trong quá trình làm việc (diff, check
modifications, show history, merge source, …)
2 Tại sao sử dụng GitHub ?
2.1 GitHub cho mọi người thấy khả năng code của thành viên
Nhìn vào lịch sử hoạt động của một tài khoản GitHub cho bàn biết nhiều điều: thời gian bắt đầu, các project từng tham gia Điều này cho phép quản lý hay nhóm trưởng có thể theo dõi và đánh giá code của thành viên, qua đó có thể đưa ra đúng năng lực thật sự của mình và đưa ra các nhiệm vụ, deadlines phù hợp, đồng thời có thể dễ dàng quản lý project của mình khi GitHub ghi lại toàn bộ lịch sử commit
Trang 62.2 GitHub giúp từng cá nhân cải thiện code
GitHub là một công cụ tuyệt vời giúp từng thành viên trong nhóm quan sát và so sánh code với nhau Nó cho phép thành viên đọc code của các thành viên khác và so sánh những lần commit, điều này giúp mỗi thành viên luôn phải tự thúc đẩy bản thân code để hoàn thành tiến độ
và dealine của mình Và từng thành viên có thể học hỏi được những kinh nghiệm và kĩ thuật xử
lý của thành viên khác thông qua lịch sử commit của họ, đây là một môi trường tuyệt vời để cá nhân tự phát triển khả năng của bản thân
2.3 GitHub là môi trường thực tế sau này
Hầu hết các công ty hiện nay đều sử dụng GitHub, cho nên viêc làm quen với GitHub khi còn học đại học là điều vô cùng cần thiết, không chỉ thế, nó giúp chúng ta lưu lại những đồ án, sản phẩm, dự án chúng ta hoàn thảnh, khi HR phỏng vấn, họ dễ dàng xem các projects mà chúng
ta hoàn thành từ đó có thể đưa chúng ta vào các vị trí thích hợp
là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java
C# được thiết kế chủ yếu bởi Anders Hejlsberg kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC Phiên bản gần đây nhất là 8.0, được phát hành vào năm
2019 cùng với Visual Studio 2019 phiên bản 16.3
2 Đặc trưng của C#
2.1 C# Là ngôn ngữ đơn giản
Như ta đã biết thì ngôn ngữ C# dựng trên nền tảng C++ và Java nên ngôn ngữ C# khá đơn giản Nếu chúng ta thân thiện với C và C++ hoậc thậm chí là Java, chúng ta sẽ thấy C# khá giống
về diện mạo, cú pháp, biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ
C và C++, nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn Một vài trong các sự cải tiến là loại bỏ các dư thừa, hay là thêm vào những cú pháp thay đổi
2.2 C# là ngôn ngữ thuần hướng đối tượng
Lập trình hướng đối tượng(tiếng Anh: Object-oriented programming, viết tắt: OOP) là một phương pháp lập trình có 4 tính chất Đó là tính trừu tượng (abstraction), tính đóng gói
Trang 7(encapsulation), tính đa hình (polymorphism) và tính kế thừa (inheritance) C# hỗ trợ cho chúng
Có thể thông dịch sang bytecode, biên dịch được bởi CLR, các nhị phân lớn hơn
2.4 Nền tảng Net
Dot Net (viết tắt NET) là một nền tảng (Framework) cho phép lập trình viên sử dụng để phát triển các ứng dụng, website Nền tảng này được phát triển bởi Microsoft nó chạy trên hệ điều hành Microsoft Window Chú ý rằng NET không phải là ngôn ngữ lập trình, mà là nền tảng cho phép các ngôn ngữ lập trình khác nhau như C# sử dụng để tạo nên các website, ứng dụng trên Internet
Cấu tạo của NET là một bộ các dòng code được viết sẵn bởi các lập trình viên Microsoft, các lập trình viên khác sử dụng nền tảng này để phát triển các ứng dụng và dịch vụ web khác một cách nhanh chóng hơn
Trang 8III Visual Studio
1 Visual Studio là gì ?
Visual studio là một trong những công cụ hỗ trợ lập trình và thiết kế website rất nổi tiếng nhất hiện nay của Mcrosoft và chưa có một phần mềm nào có thể thay thế được nó Visual Studio được viết bằng 2 ngôn ngữ đó chính là C# và VB+ Đây là 2 ngôn ngữ lập trình giúp người dùng
có thể lập trình được hệ thống một các dễ dàng và nhanh chóng nhất thông qua Visual Studio
Visual Studio là một phần mềm lập trình hệ thống được sản xuất trực tiếp từ Microsoft Từ khi ra đời đến nay, Visual Studio đã có rất nhiều các phiên bản sử dụng khác nhau Điều đó, giúp cho người dùng có thể lựa chọn được phiên bản tương thích với dòng máy của mình cũng như cấu hình sử dụng phù hợp nhất
Bên cạnh đó, Visual Studio còn cho phép người dùng có thể tự chọn lựa giao diện chính cho máy của mình tùy thuộc vào nhu cầu sử dụng
2 Một số tính năng chính
2.1 Biên tập mã
Giống như bất kỳ một IDE khác, Visual Studio gồm có một trình soạn thảo mã hỗ trợ tô sáng
cú pháp và hoàn thiện mả bằng các sử dụng IntelliSense không chỉ cho các hàm, biến và các phương pháp mà còn sử dụng cho các cấu trúc ngôn ngữ như: Truy vấn hoặc vòng điều khiển Bên cạnh đó, các trình biên tập mã Visual Studio cũng hỗ trợ cài đặt dấu trang trong mã để có thể điều hướng một cách nhanh chóng và dễ dàng Hỗ trợ các điều hướng như: Thu hẹp các khối mã lệnh, tìm kiếm gia tăng,…
Visual Studio còn có tính năng biên dịch nền tức là khi mã đang được viết thì phần mềm này
sẽ biên dịch nó trong nền để nhằm cung cấp thông tin phản hồi về cú pháp cũng như biên dịch lỗi
và được đánh dấu bằng các gạch gợn sóng màu đỏ
2.2 Trình gỡ lỗi
Visual Studio có một trình gỡ lỗi có tính năng vừa lập trình gỡ lỗi cấp máy và gỡ lỗi cấp mã nguồn Tính năng này hoạt động với cả hai mã quản lý giống như ngôn ngữ máy và có thể sử dụng để gỡ lỗi các ứng dụng được viết bằng các ngôn ngữ được hỗ trợ bởi Visual Studio
2.3 Thiết kế
Windows Forms Designer
Được sử dụng với mục đích xây dựng GUI sử dụng Windows Forms, được bố trí dùng để xây dựng các nút điều khiển bên trong hoặc cũng có thể khóa chúng vào bên cạnh mẫu Điều khiển trình bày dữ liệu có thể được liên kết với các nguồn dữ liệu như: Cơ sở dữ liệu hoặc truy vấn
WPF Designer
Trang 9Tính năng này cũng giống như Windows Forms Designer có công dụng hỗ trợ kéo và thả ẩn dụ
Sử dụng tương tác giữa người và máy tính nhắm mục tiêu vào Windows Presentation
Foundation
Web designer/development
Visual Studio cũng có một trình soạn thảo và thiết kế website cho phép các trang web được thiết
kế theo tính năng kéo và thể đối tượng
Chương 3: Quá trình thực hiện
I Thiết kế giao diện
Trang 101 Ý tưởng
Nhóm chọn mô hình thiết kế giao diện đơn giản, dễ nhìn, phối hợp giao diện từ Paint và Photoshop Điều này giúp cho người sử dụng có cái nhìn quen thuộc, không bị rối với các chức năng Về màu sắc, ban đầu về cơ bản là các màu trắng và xám, kết thúc đồ án, nhóm quyết định
ra thêm 1 bản Dark Theme với tone màu chủ đạo là đen, mang sắc thái ngược hoàn toàn so với bản gốc
2 Nội dung giao diện
Giao diện có thể được chia làm 4 phần chính
Trang 112.1 Trung tâm xử lý
Trung tâm xử lý là vùng được khoanh tròn, đây sẽ là nơi bức ảnh được xử lý, ở góc trên bên trái sẽ là tab điều khiển, góc dưới bên trái là độ phóng đại của tấm ảnh, giúp người dùng có thể phóng to thu nhỏ, hỗ trợ việc xử lý ảnh một cách dễ dàng hơn, ngoài ra còn có nút Clear ( C ) để người dùng đưa ảnh về kích thước ban đầu
Trang 122.2 Thanh công cụ
Thanh công cụ sẽ bao gồm toàn bộ các lệnh của chương trình Được chia làm 7 loại thao tác
Thao tác với File
Chỉnh sửa (Edit)
Cộng cụ hỗ trợ (Tools)
Tầm nhìn (View)
Thao tác với Layer
Chỉnh sửa màu (Color)
Các lệnh filler
Giúp đỡ, liên hệ và thông tin cơ bản (Help)
2.1.1 File
Trang 13Các thao tác với file gồm 6 thao tác chính
Trang 15Thao tác layer gồm 7 thao tác chính
New Layer (Ctrl + Shift + N)
Tạo ra một layer mới
Trang 16 Hue and Saturation
Chỉnh các thông số Hue và Saturation
Trang 18Cho phép người dùng chọn màu theo ý thích bằng cách giữ và rê chuột quanh bảng màu ở trên
Ở dưới sẽ hiện kèm theo chỉ số Red, Green và Blue cũng như cường độ của chúng
2.3.2 Bảng lệnh
Bảng lệnh cho phép người dùng thực hiện 1 số thao tác cơ bản như thêm hoặc vẽ đè lên bức ảnh Hàng đầu tiên có các thao tác quay, drap hình.Hàng thứ 2 có các thao tác Pen, Erase, Color Picker, Ngoài ra thì còn có 2 thanh để tùy chỉnh kích cỡ cây bút cũng như độ mờ (Opacity) của
nó Hàng cuối cùng cho phép người dùng vẽ các hình cơ bản như hình chữ nhật, hình elipp, đường thẳng,
2.3 Thanh lịch sử và kiểm soát layer
2.3.1 Thanh lịch sử
Trang 19Lưu lại toàn bộ lịch sử các thao tác người dùng vừa thực hiện, Giúp người dùng có thể quay lại một cách hợp lý cũng như kiểm soát được chuỗi thao tác của mình một cách dễ dàng hơn
2.3.2 Thanh Layer
Cho phép người dùng theo dõi và tùy chỉnh với các layer, có đầy đủ thao tác với layer như thêm, xóa, dịch lên, dịch xuống, nhân đôi layer
Trang 20II Thực hiện Code
File code chính gồm 1544 dòng code bao gồm các phần khác nhau, ngoài file chính ra thì còn có các file phụ để hỗ trợ cho file chính Các lệnh được phân thành hai loại và từ đó đưa ra được hai hướng xử lý khác nhau
1 Tạo hình form
Phần tạo form là phần đơn giản nhất, chỉ việc sử dụng các toolsbox có sẵn trong thư viện là
đã có thể tạo ra một giao diện cơ bản
Thanh công cụ được xây dựng bằng cách sử dụng 1 menustrip, bảng màu thanh hiển thị màu tạo bởi các picturebox, sau đó, để dễ sử dụng, nhóm sẽ gộp nó vào một panel riêng, gọi là ColorPanel
Tương tự với các lệnh vẽ hình, nhóm cũng sử dụng một menutrip để chứa các lệnh, sau đó gộp nó vào riêng một panel riêng, gọi ToolPanel
Phần trung tâm xử lý,nhóm sử dụng tabcontrol Tương tự với các panel lưu lịch sử, panel xử
lý layer
Vậy là về cơ bản, nhóm đã xây dựng được một giao diện sử dụng cơ bản
Các ToolBox mà nhóm đã sử dụng để xây dựng giao diện:
Menustrip
Combobox
PictureBox
ToolStripButton
Trang 21Hướng xử lý của nhóm là sử dụng các event mouse up và mouse down để đánh dấu các điểm
và thực hiện lệnh khi chuột di chuyển (mouse move), sau khi nhả chuột thì đưa ra kết quả cuối cùng
Ví dụ như thao tác pick màu, khi người dùng click chuột vào bảng màu, chương trình sẽ
đánh dấu điểm màu đó và đưa ra màn hình, tuy nhiên khi người dùng di chuyển chuột trong
phạm vi thao tác, chương trình vẫn tiếp tục ghi lại vị trí con trỏ và thay đổi màu sắc ngay lập tức, khi người dùng nhả chuột thì chương trình mới ghi nhận lại kết quả cuối cùng
Một ví dụ khác, đó là thao tác vẽ hình Khi người dùng chọn thao tác vẽ hình chữ nhật, và người dùng ấn chuột, chương trình sẽ ghi nhận điểm bắt đầu, khi chuột di chuyển, sẽ có hình chữ nhật được vẽ theo, khi nhả chuột, đó sẽ là hình chữ nhật cuối cùng