• Trang chủ
  • Tin công nghệ
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    5 Design Pattern mà developer nên biết

    5 Design Pattern mà developer nên biết

    Live Stream và những điều có thể bạn chưa biết

    Live Stream và những điều có thể bạn chưa biết

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    7 công nghệ nổi bật phát triển mạnh năm 2018

    7 công nghệ nổi bật phát triển mạnh năm 2018

    Bitcoin đã được khai thác 80% tổng lượng

    Bitcoin đã được khai thác 80% tổng lượng

  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    Top xu hướng thiết kế web cho năm 2017

    Top xu hướng thiết kế web cho năm 2017

    Tạo Layout đơn giản với DIV và CSS

    Tạo Layout đơn giản với DIV và CSS

    Tạo ứng dụng Swing bằng Netbean

    Backlink là gì? Cách tạo backlink?

    Tạo ứng dụng Swing bằng Netbean

    Giới thiệu về HTML5 và CSS3

  • Lập trình C#
    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Tag Helpers trong ASP.NET Core MVC

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    7 thủ thuật Windows Group Policy trong Windows 10

    7 thủ thuật Windows Group Policy trong Windows 10

    5 cách để học lập trình nhanh hơn

    Ví dụ minh họa Client-Server trong C#

    Remotting

    Remotting

    Debug chương trình với VS.NET

    Debug chương trình với VS.NET

    Tạo Form có hình dạng bất kỳ trong C#

    Tạo Form có hình dạng bất kỳ trong C#

  • Lập trình PHP
    php-mysql

    Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Sử dụng câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Lấy giá trị của cột tự tăng của record vừa được thêm mới

    php-mysql

    MySQL prepared statements trong PHP

    php-mysql

    Sử dụng INSERT trong MySQL & PHP

    php-mysql

    Tạo cơ sở dữ liệu và bảng trong MySQL bằng PHP

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    WordPress-Cách chia bài viết dài thành nhiều trang

    WordPress-Làm nổi bật comment của tác giả bài viết

No Result
View All Result
Học Lập Trình
  • Trang chủ
  • Tin công nghệ
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    5 Design Pattern mà developer nên biết

    5 Design Pattern mà developer nên biết

    Live Stream và những điều có thể bạn chưa biết

    Live Stream và những điều có thể bạn chưa biết

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    7 công nghệ nổi bật phát triển mạnh năm 2018

    7 công nghệ nổi bật phát triển mạnh năm 2018

    Bitcoin đã được khai thác 80% tổng lượng

    Bitcoin đã được khai thác 80% tổng lượng

  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    Top xu hướng thiết kế web cho năm 2017

    Top xu hướng thiết kế web cho năm 2017

    Tạo Layout đơn giản với DIV và CSS

    Tạo Layout đơn giản với DIV và CSS

    Tạo ứng dụng Swing bằng Netbean

    Backlink là gì? Cách tạo backlink?

    Tạo ứng dụng Swing bằng Netbean

    Giới thiệu về HTML5 và CSS3

  • Lập trình C#
    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Tag Helpers trong ASP.NET Core MVC

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    7 thủ thuật Windows Group Policy trong Windows 10

    7 thủ thuật Windows Group Policy trong Windows 10

    5 cách để học lập trình nhanh hơn

    Ví dụ minh họa Client-Server trong C#

    Remotting

    Remotting

    Debug chương trình với VS.NET

    Debug chương trình với VS.NET

    Tạo Form có hình dạng bất kỳ trong C#

    Tạo Form có hình dạng bất kỳ trong C#

  • Lập trình PHP
    php-mysql

    Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Sử dụng câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Lấy giá trị của cột tự tăng của record vừa được thêm mới

    php-mysql

    MySQL prepared statements trong PHP

    php-mysql

    Sử dụng INSERT trong MySQL & PHP

    php-mysql

    Tạo cơ sở dữ liệu và bảng trong MySQL bằng PHP

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    WordPress-Cách chia bài viết dài thành nhiều trang

    WordPress-Làm nổi bật comment của tác giả bài viết

No Result
View All Result
Học Lập Trình
No Result
View All Result

Tạo Form có hình dạng bất kỳ trong C#

qadmin by qadmin
20/09/2013
in Lập trình C#
0 0
0
Tạo Form có hình dạng bất kỳ trong C#
0
SHARES
60
VIEWS
Share on FacebookShare on Twitter

Bạn muốn tạo ra ứng dụng có giao diện gây ấn tượng với người dùng, form bình thường có dạng hình dạng chữ nhật hoặc vuông không thỏa mãn yêu cầu của bạn? Bạn muốn tạo form có hình dạng bất kỳ? Trong C#, chúng ta hoàn toàn có thể làm điều này với một thủ thuật rất đơn giản.

Form và hầu hết các control (điều khiển) trong C# đều có thuộc tính Region. Thuộc tính này quy định một vùng để Form hoặc control hiển thị. Để tạo ra form hay control có hình dạng bất kỳ, chúng ta phải tạo ra một vùng màn hình theo hình dạng mong muốn và truyền vùng màn hình này vào cho thuộc tính Region.

Chúng ta có thể tự vẽ một region hoặc tạo nó từ một ảnh bitmap. Trong bài hướng dẫn này, tôi sẽ trình bày cách tạo một region từ một ảnh bitmap và “ép” nó vào form.

Đầu tiên, ta tạo một lớp có chức năng chuyển một ảnh bitmap thành một region, tạm gọi là lớp BitmapRegion.

using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace CustomShapedForm
{
public class BitmapRegion
{
public BitmapRegion() { }
public static void CreateRegion(Control ct, Bitmap bm)
{
if (ct == null || bm == null)
{
return;
}
// Thiết lập kích thước của control bằng với
// kích thước của bitmap
ct.Width = bm.Width;
ct.Height = bm.Height;
// kiểm tra xem ct có phải là Form
if (ct is System.Windows.Forms.Form)
{
Form fm = (Form)ct;
// Tăng kích thước form để dành chổ cho đường viền (nếu có)
fm.Width += 15;
fm.Height += 35;
// thiết lập form trở thành không có border
fm.FormBorderStyle = FormBorderStyle.None;
// đưa bitmap trở thành background image
fm.BackgroundImage = bm;
// tính toán graphics path dựa trên bitmap
GraphicsPath path = CalculateGraphicsPath(bm);
// thay đổi thuộc tính Region của form
fm.Region = new Region(path);
}
else if (ct is System.Windows.Forms.Button)
{
Button bt = (Button)ct;
bt.Text = ""; // không hiển thị label của button
bt.Cursor = Cursors.Hand;
// thiết lập background image cho button
bt.BackgroundImage = bm;
GraphicsPath path = CalculateGraphicsPath(bm);
bt.Region = new Region(path);
}
}

private static GraphicsPath CalculateGraphicsPath(Bitmap bm)
{
GraphicsPath path = new GraphicsPath();
// dùng màu của góc trên trái của bm là màu transparent
Color transparentColor = bm.GetPixel(0, 0);
// duyệt bm theo cột
for (int row = 0; row < bm.Height; row++)
{
// duyệt bm theo hàng
for (int col = 0; col < bm.Width; col++)
{
if (bm.GetPixel(col, row) != transparentColor)
{
int i = col;
// đếm số pixel trong hàng khác màu với transparentColor
for (i = col+1; i < bm.Width; i++)
{
if (bm.GetPixel(i, row) == transparentColor)
break;
}
path.AddRectangle(new Rectangle(col, row, i-col, 1));
col = i;
}
}
}
return path;
}
}
}

Ý tưởng: chúngta sẽ quét toàn bộ ảnh bitmap này, lọc tất cả các pixel có màu khác với màu nền (background) và cho vào một đối tượng GraphicsPath. Mục đích là để lấy vùng Shape. Sau đó ta sẽ tạo một region từ Graphic Path này và ép nó vào form hoặc control. Ví dụ:

public Form1()
{
InitializeComponent();

BitmapRegion.CreateRegion(this, bmForm);
BitmapRegion.CreateRegion(btnExit, bmExit);
}

Kết quả:
irregularform
Chúc các bạn thành công. Các bạn có thể download chương trình mẫu bên dưới.
Source code tham khảo:
[sociallocker id=”444″]Download[/sociallocker]

Tags: c#codecodingtrainingtutorial
Previous Post

delegate và event trong C#

Next Post

Debug chương trình với VS.NET

qadmin

qadmin

Related Posts

Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Tag Helpers trong ASP.NET Core MVC

13/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 7

03/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 6

03/12/2020
Hướng dẫn sử dụng Crystal Report với Visual Studio

Hướng dẫn sử dụng Crystal Report với Visual Studio

19/11/2020
7 thủ thuật Windows Group Policy trong Windows 10

7 thủ thuật Windows Group Policy trong Windows 10

15/12/2016
5 cách để học lập trình nhanh hơn

Ví dụ minh họa Client-Server trong C#

05/10/2013
Next Post
Debug chương trình với VS.NET

Debug chương trình với VS.NET

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

You might also like

sublime-text-3

SublimeText: 10 plugin hổ trợ JavaScript

16/01/2021
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Tag Helpers trong ASP.NET Core MVC

13/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 7

03/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 6

03/12/2020
php-mysql

Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

13/11/2020
php-mysql

Sử dụng câu lệnh SELECT trong PHP và MySQL

13/11/2020
Học Lập Trình

Code5s.com được xây dựng với mong muốn mang lại những bài học hữu ích, thiết thực, và chất lượng cho mọi người.

Chuyên mục

Công cụ Java & Java EE Lập trình Android Lập trình C# Lập trình PHP Thiết kế web Tin công nghệ Tips Tài liệu Wearable Web Services XML

Kết nối

  • Trang chủ
  • Tin công nghệ
  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
  • Lập trình C#
  • Lập trình PHP

© 2020 Code5s.com

No Result
View All Result
  • Trang chủ
  • Tin công nghệ
  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
  • Lập trình C#
  • Lập trình PHP

© 2020 Code5s.com

Welcome Back!

Login to your account below

Forgotten Password?

Create New Account!

Fill the forms bellow to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In