In the past, when I wanted to make irregular forms, I mostly used API functions to achieve it. In C#, you can still make beautiful irregular forms without using API functions. The following is an introduction to the relevant methods. The following is the code.
private void Form1_Load(object sender, EventArgs e) { //重新绘制窗口样式 string fileName = @"C:\Users\admin\Desktop\Yuan1.png"; Bitmap mybitmap = new Bitmap(fileName); CreateControlRegion(this, mybitmap); this.BackColor = Color.White;// 此处为添加部分 this.TransparencyKey = Color.White;//此处为添加部分 }
/// <summary> /// 重新绘制窗口样式 /// </summary> /// <param name="control"></param> /// <param name="bitmap"></param> public static void CreateControlRegion(Control control, Bitmap bitmap) { // Return if control and bitmap are null //判断是否存在控件和位图 if (control == null || bitmap == null) return; //设置控件大小为位图大小 control.Width = bitmap.Width; control.Height = bitmap.Height; // Check if we are dealing with Form here //当控件是form时 if (control is System.Windows.Forms.Form) { // Cast to a Form object //强制转换为FORM Form form = (Form)control; //当FORM的边界FormBorderStyle不为NONE时,应将FORM的大小设置成比位图大小稍大一点 form.Width = control.Width; form.Height = control.Height; //没有边界 form.FormBorderStyle = FormBorderStyle.None; //将位图设置成窗体背景图片 form.BackgroundImage = bitmap; //计算位图中不透明部分的边界 GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap); //应用新的区域 form.Region = new Region(graphicsPath); // 以下为自己添加的语句,不添加此两句会出现问题 form.Width = bitmap.Width; form.Height = bitmap.Height; } //当控件是button时 else if (control is System.Windows.Forms.Button) { //强制转换为 button Button button = (Button)control; //不显示button text button.Text = ""; //改变 cursor的style button.Cursor = Cursors.Hand; //设置button的背景图片 button.BackgroundImage = bitmap; //计算位图中不透明部分的边界 GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap); // Apply new region //应用新的区域 button.Region = new Region(graphicsPath); button.Width = bitmap.Width; button.Height = bitmap.Height; button.FlatStyle = FlatStyle.Popup;//此处为添加部分 } } private static GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap) { //创建 GraphicsPath GraphicsPath graphicsPath = new GraphicsPath(); //使用左上角的一点的颜色作为我们透明色 Color colorTransparent = bitmap.GetPixel(0, 0); //第一个找到点的X int colOpaquePixel = 0; // 偏历所有行(Y方向) for (int row = 0; row < bitmap.Height - 1; row++) { // Reset value //重设 colOpaquePixel = 0; //偏历所有列(X方向) for (int col = 0; col < bitmap.Width - 1; col++) { //如果是不需要透明处理的点则标记,然后继续偏历 if (bitmap.GetPixel(col, row) != colorTransparent) { colOpaquePixel = col; //建立新变量来记录当前点 int colNext = col; ///从找到的不透明点开始,继续寻找不透明点,一直到找到或则达到图片宽度 for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++) { Color gpi = bitmap.GetPixel(colNext, row); if (bitmap.GetPixel(colNext, row) == colorTransparent) { break; } } //将不透明点加到graphics path { graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, row, colNext - colOpaquePixel, 1)); } col = colNext; } } } return graphicsPath; }
Perfect!
The above is the detailed content of C# winform creates irregular forms (code). For more information, please follow other related articles on the PHP Chinese website!

C# and .NET runtime work closely together to empower developers to efficient, powerful and cross-platform development capabilities. 1) C# is a type-safe and object-oriented programming language designed to integrate seamlessly with the .NET framework. 2) The .NET runtime manages the execution of C# code, provides garbage collection, type safety and other services, and ensures efficient and cross-platform operation.

To start C#.NET development, you need to: 1. Understand the basic knowledge of C# and the core concepts of the .NET framework; 2. Master the basic concepts of variables, data types, control structures, functions and classes; 3. Learn advanced features of C#, such as LINQ and asynchronous programming; 4. Be familiar with debugging techniques and performance optimization methods for common errors. With these steps, you can gradually penetrate the world of C#.NET and write efficient applications.

The relationship between C# and .NET is inseparable, but they are not the same thing. C# is a programming language, while .NET is a development platform. C# is used to write code, compile into .NET's intermediate language (IL), and executed by the .NET runtime (CLR).

C#.NET is still important because it provides powerful tools and libraries that support multiple application development. 1) C# combines .NET framework to make development efficient and convenient. 2) C#'s type safety and garbage collection mechanism enhance its advantages. 3) .NET provides a cross-platform running environment and rich APIs, improving development flexibility.

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C# and .NET adapt to the needs of emerging technologies through continuous updates and optimizations. 1) C# 9.0 and .NET5 introduce record type and performance optimization. 2) .NETCore enhances cloud native and containerized support. 3) ASP.NETCore integrates with modern web technologies. 4) ML.NET supports machine learning and artificial intelligence. 5) Asynchronous programming and best practices improve performance.

C#.NETissuitableforenterprise-levelapplicationswithintheMicrosoftecosystemduetoitsstrongtyping,richlibraries,androbustperformance.However,itmaynotbeidealforcross-platformdevelopmentorwhenrawspeediscritical,wherelanguageslikeRustorGomightbepreferable.

The programming process of C# in .NET includes the following steps: 1) writing C# code, 2) compiling into an intermediate language (IL), and 3) executing by the .NET runtime (CLR). The advantages of C# in .NET are its modern syntax, powerful type system and tight integration with the .NET framework, suitable for various development scenarios from desktop applications to web services.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

SublimeText3 Linux new version
SublimeText3 Linux latest version

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SublimeText3 English version
Recommended: Win version, supports code prompts!

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.