这是三年前研究C#与GDI+时的作品,它使用C#与GDI+绘制一把有透明度、带刻度 (以像素为单位)的直尺。
最终效果:
横向直尺:(注:设置了80%不透明度)
竖向直尺:(注:设置了100%不透明度,即完全不透明)
C#代码:
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Resources;
using System.Windows.Forms;
namespace BrawDraw.Com.Utility.Ruler
{
public class BeautifulRuler : Form
{
private ToolTip _toolTip = new ToolTip();
private Point _offset;
private Rectangle _mouseDownRect;
private int _resizeBorderWidth = 5;
private Point _mouseDownPoint;
private ResizeRegion _resizeRegion = ResizeRegion.None;
private ContextMenu _menu = new ContextMenu();
private MenuItem _verticalMenuItem;
private MenuItem _toolTipMenuItem;
private static bool showWidth = true;
private static bool showWebSite = true;
private const string SHORT_WEBSITE_STRING="BrawDraw.Com";
private const string FULL_WEBSITE_STRING="http://www.BrawDraw.Com";
private string _webSiteString;
private Color _webSiteStringColor;
#region ResizeRegion enum
private enum ResizeRegion
{
None, N, NE, E, SE, S, SW, W, NW
}
#endregion
public BeautifulRuler()
{
InitializeComponent();
ResourceManager resources = new ResourceManager(typeof(BeautifulRuler));
Icon = ((Icon)(resources.GetObject("$this.Icon")));
SetUpMenu();
Text = "Ruler";
BackColor = Color.White;
ClientSize = new Size(400, 75);
FormBorderStyle = FormBorderStyle.None;
Opacity = 0.75;
ContextMenu = _menu;
Font = new Font("Tahoma", 10);
_webSiteStringColor = Color.Blue;
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
this.TopMost = true;
}
public string WebSiteString
{
get
{
if (_webSiteString == null)
{
_webSiteString = FULL_WEBSITE_STRING;
}
return _webSiteString;
}
set
{
value = _webSiteString;
}
}
public Color WebSiteStringColor
{
get
{
if (_webSiteStringColor == Color.Empty)
{
_webSiteStringColor = Color.Black;
}
return _webSiteStringColor;
}
set
{
value = _web