行业知识
WPF中如何设置自定义控件(三)
���定义背景:前面讲过自定义圆角按钮和圆形按钮,这节主要将自定义背景色。
在以往的设置中我们的CornerRadius是一个值,
解析:主要是想做一个主界面,左边是菜单右边是主页内容。
考略到左右分割就是两列,因此我选择了图表控件,创建了两个 ;其中左边是绝对长度200,其余是右边。
左边当时想做一个不规则图形,因此在左边用包裹一个,方便后期修改,可以看到右上角和左下角都有个倒角,但是倒角的大小不一样;右边用包裹一个方便后期放自定义控件。
中CornerRadius的顺序是左上、右上、右下、左下。感兴趣的话可以自己实验一下。
源码:
using System.Windows.Media;
using MS.Internal;
using MS.Internal.PresentationFramework;
using MS.Internal.Telemetry.PresentationFramework;
namespace System.Windows.Controls
{
public class Border : Decorator
{
private struct Radii
{
internal double LeftTop;
internal double TopLeft;
internal double TopRight;
internal double RightTop;
internal double RightBottom;
internal double BottomRight;
internal double BottomLeft;
internal double LeftBottom;
internal Radii(CornerRadius radii, Thickness borders, bool outer)
{
double num = 0.5 * borders.Left;
double num2 = 0.5 * borders.Top;
double num3 = 0.5 * borders.Right;
double num4 = 0.5 * borders.Bottom;
if (outer)
{
if (DoubleUtil.IsZero(radii.TopLeft))
{
LeftTop = (TopLeft = 0.0);
}
else
{
LeftTop = radii.TopLeft + num;
TopLeft = radii.TopLeft + num2;
}
if (DoubleUtil.IsZero(radii.TopRight))
{
TopRight = (RightTop = 0.0);
}
else
{
TopRight = radii.TopRight + num2;
RightTop = radii.TopRight + num3;
}
if (DoubleUtil.IsZero(radii.BottomRight))
{
RightBottom = (BottomRight = 0.0);
}
else
{
RightBottom = radii.BottomRight + num3;
BottomRight = radii.BottomRight + num4;
}
if (DoubleUtil.IsZero(radii.BottomLeft))
{
BottomLeft = (LeftBottom = 0.0);
return;
}
BottomLeft = radii.BottomLeft + num4;
LeftBottom = radii.BottomLeft + num;
}
else
{
LeftTop = Math.Max(0.0, radii.TopLeft - num);
TopLeft = Math.Max(0.0, radii.TopLeft - num2);
TopRight = Math.Max(0.0, radii.TopRight - num2);
RightTop = Math.Max(0.0, radii.TopRight - num3);
RightBottom = Math.Max(0.0, radii.BottomRight - num3);
BottomRight = Math.Max(0.0, radii.BottomRight - num4);
BottomLeft = Math.Max(0.0, radii.BottomLeft - num4);
LeftBottom = Math.Max(0.0, radii.BottomLeft - num);
}
}
}
[CommonDependencyProperty]
public static readonly DependencyProperty BorderThicknessProperty;
public static readonly DependencyProperty PaddingProperty;
public static readonly DependencyProperty CornerRadiusProperty;
[CommonDependencyProperty]
public static readonly DependencyProperty BorderBrushProperty;
[CommonDependencyProperty]
public static readonly DependencyProperty BackgroundProperty;
private bool _u
下一篇:魔兽服务器排名怎么看?