You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.3 KiB
120 lines
3.3 KiB
#if NETFX || NETCORE
|
|
|
|
using Apewer.Internals.Interop;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Apewer.Surface
|
|
{
|
|
|
|
/// <summary>由 .NET Framework 提供的标准窗体。</summary>
|
|
public class NormalForm : System.Windows.Forms.Form
|
|
{
|
|
|
|
/// <summary>必需的设计器变量。</summary>
|
|
private System.ComponentModel.IContainer components = null;
|
|
|
|
/// <summary>清理所有正在使用的资源。</summary>
|
|
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing && (components != null)) components.Dispose();
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
#region Windows 窗体设计器生成的代码
|
|
|
|
/// <summary>
|
|
/// 设计器支持所需的方法 - 不要修改
|
|
/// 使用代码编辑器修改此方法的内容。
|
|
/// </summary>
|
|
private void InitializeComponent()
|
|
{
|
|
this.SuspendLayout();
|
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
this.ClientSize = new System.Drawing.Size(900, 600);
|
|
this.Font = FormsUtility.DefaultFont;
|
|
this.Text = "NormalForm";
|
|
this.ResumeLayout(false);
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>构造函数。</summary>
|
|
public NormalForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
/// <summary>获取 DPI 缩放比例。</summary>
|
|
public double DpiScale
|
|
{
|
|
get
|
|
{
|
|
if (FormsUtility.DpiScale == null)
|
|
{
|
|
using (var g = CreateGraphics())
|
|
{
|
|
FormsUtility.DpiScale = g.DpiX / 96F;
|
|
}
|
|
}
|
|
return FormsUtility.DpiScale.Value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="m"></param>
|
|
protected override void WndProc(ref Message m)
|
|
{
|
|
// WM_DPICHANGED = 0x02E0
|
|
base.WndProc(ref m);
|
|
}
|
|
|
|
#region Aero
|
|
|
|
private bool AeroEnabled = false;
|
|
|
|
/// <summary>启用 Aero 透明效果。</summary>
|
|
private void EnableAero()
|
|
{
|
|
AeroEnabled = true;
|
|
Load += (s, e) =>
|
|
{
|
|
if (!FormsUtility.DwmIsCompositionEnabled) return;
|
|
|
|
var width = Width;
|
|
var height = Height;
|
|
|
|
var margins = new MARGINS();
|
|
// margins.Right = -1; // 全窗体透明。
|
|
margins.Right = margins.Left = margins.Top = margins.Bottom = width + height;
|
|
DwmApi.DwmExtendFrameIntoClientArea(Handle, ref margins);
|
|
};
|
|
}
|
|
|
|
/// <summary></summary>
|
|
protected override void OnPaintBackground(PaintEventArgs e)
|
|
{
|
|
base.OnPaintBackground(e);
|
|
if (AeroEnabled)
|
|
{
|
|
if (FormsUtility.DwmIsCompositionEnabled)
|
|
{
|
|
e.Graphics.Clear(Color.Black);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|