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.
|
|
#if NETFX || NETCORE
using Apewer.Internals.Interop; using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;
namespace Apewer.Surface {
/// <summary>
///
/// </summary>
public class BlockForm : BaseForm {
#region this
private bool _haveshadow = false;
/// <summary></summary>
public BlockForm() { Optimize(); }
/// <summary>包含窗体阴影。</summary>
public bool HaveShadow { get { return _haveshadow; } set { _haveshadow = value; if (value) { if (_shadow != null) HideShadow(); } else { if (_shadow == null) ShowShadow(); } } }
#endregion
#region override
/// <summary>显示或隐藏时的动画和阴影。</summary>
protected override void OnVisibleChanged(EventArgs e) { if (Visible) { if (!DesignMode) User32.AnimateWindow(this.Handle, 150, Constant.AW_BLEND | Constant.AW_ACTIVATE); if (!DesignMode && _shadow == null) ShowShadow(); base.OnVisibleChanged(e); } else { base.OnVisibleChanged(e); User32.AnimateWindow(this.Handle, 150, Constant.AW_BLEND | Constant.AW_HIDE); } }
/// <summary>关闭窗体时同时关闭阴影。</summary>
protected override void OnClosing(CancelEventArgs e) { HideShadow(); base.OnClosing(e); User32.AnimateWindow(this.Handle, 150, Constant.AW_BLEND | Constant.AW_HIDE); }
#endregion
#region surface
/// <summary>
///
/// </summary>
/// <param name="color"></param>
/// <param name="titleHeight"></param>
/// <param name="border"></param>
public void PaintWall(Color color, int titleHeight, bool border = true) { var bitmap = new Bitmap(Width, Height); var graphic = Graphics.FromImage(bitmap); var brush = new SolidBrush(color); var pen = new Pen(color);
graphic.FillRectangle(brush, 0, 0, Width, titleHeight); if (border) graphic.DrawRectangle(pen, 0, 0, Width - 1, Height - 1);
pen.Dispose(); brush.Dispose(); graphic.Dispose();
if (BackgroundImage != null) BackgroundImage.Dispose(); BackgroundImage = bitmap; }
#endregion
#region shadow
/// <summary>窗体阴影边框。</summary>
private BlockShadow _shadow;
private void ShowShadow() { if (!HaveShadow) return; _shadow = new BlockShadow(this); _shadow.Show(this); }
private void HideShadow() { if (_shadow != null) { _shadow.Close(); _shadow.Dispose(); _shadow = null; } }
/// <summary>阴影已溢出屏幕。</summary>
public bool ShadowOverflow { get { int vwidth = Width + 200; int vheight = Height + 200; if ((vwidth > Screen.PrimaryScreen.Bounds.Width) || (vheight > Screen.PrimaryScreen.Bounds.Height)) { return true; } else return false; } }
#endregion
} }
#endif
|