自定义背景:前面讲过自定义圆角按钮和圆形按钮,这节主要将自定义背景色。
在以往的设置中我们的CornerRadius是一个值,
效果图:
然而实际上是可以设置四个值的,如果设置的是一个值,其实表示的是四个值是相同的,效果图同上。
如何设置不同的区域背景图呢,下面我先将效果图进行展示在进一步分析:
代码如下:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Icon ="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:local="clr-namespace:DataGrid"
mc:Ignorable="d"
Title="Window1" Height="450" Width="800">
解析:主要是想做一个主界面,左边是菜单右边是主页内容。
考略到左右分割就是两列,因此我选择了
左边当时想做一个不规则图形,因此在左边用
源码:
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